From: <dal...@us...> - 2009-05-03 01:56:44
|
Revision: 15178 http://jedit.svn.sourceforge.net/jedit/?rev=15178&view=rev Author: daleanson Date: 2009-05-03 01:32:07 +0000 (Sun, 03 May 2009) Log Message: ----------- more work for bugtraq Modified Paths: -------------- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/CommitDialog.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/LogResultsPanel.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/WrapCellRenderer.java Modified: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/CommitDialog.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/CommitDialog.java 2009-05-02 21:43:01 UTC (rev 15177) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/CommitDialog.java 2009-05-03 01:32:07 UTC (rev 15178) @@ -170,6 +170,13 @@ logRegex0 = logregex; } } + if ( logRegex0 == null ) { + // if no logregex, use bugtraq:message as the regex + String regex = bugtraqProperties.getProperty( "bugtraq:message" ); // NOPMD + if ( regex != null ) { + logRegex0 = regex.replaceAll( "%BUGID%", "(.*?)" ) + "$"; + } + } } private void installComponents( boolean showLogin ) { @@ -313,8 +320,8 @@ String bugtraq_message = bugtraqProperties.getProperty( "bugtraq:message" ); bugtraq_message = bugtraq_message.replaceAll( "\n", " " ); // bugtraq standard says message must be single line String bug_text = bugField.getText(); - bug_text = bug_text.replaceAll(", ", ","); // bugtraq standard says commas must not have space before or after - bug_text = bug_text.replaceAll(" ,", ","); + bug_text = bug_text.replaceAll( ", ", "," ); // bugtraq standard says commas must not have space before or after + bug_text = bug_text.replaceAll( " ,", "," ); bugtraq_message = bugtraq_message.replaceAll( "%BUGID%", bug_text ); boolean append = isTrue( bugtraqProperties.getProperty( "bugtraq:append" ) ); if ( append ) { @@ -358,19 +365,17 @@ int ignore = JOptionPane.showConfirmDialog( CommitDialog.this.view, "Okay to commit without bug number?\n", "Confirm Commit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); return ignore != JOptionPane.YES_OPTION; } - else if ( warn && !foundBugId ) { + else if ( warn && !foundBugId && logRegex0 != null ) { // bug id is entered in bug field, need to check it against logregex if there is one. - if ( logRegex0 != null ) { - String bug_text = bugField.getText(); - bug_text = bug_text.replaceAll( ", ", "," ); // bugtraq standard says commas must not have space before or after - bug_text = bug_text.replaceAll( " ,", "," ); - String regex = logRegex1 == null ? logRegex0 : logRegex1; - Pattern p = Pattern.compile( regex ); - Matcher m = p.matcher( bug_text ); - if ( !m.find() ) { - int ignore = JOptionPane.showConfirmDialog( CommitDialog.this.view, "The bug number appears to be invalid. Use it anyway?\n", "Confirm Bug ID", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); - return ignore != JOptionPane.YES_OPTION; - } + String bug_text = bugField.getText(); + bug_text = bug_text.replaceAll( ", ", "," ); // bugtraq standard says commas must not have space before or after + bug_text = bug_text.replaceAll( " ,", "," ); + String regex = logRegex1 == null ? logRegex0 : logRegex1; + Pattern p = Pattern.compile( regex ); + Matcher m = p.matcher( bug_text ); + if ( !m.find() ) { + int ignore = JOptionPane.showConfirmDialog( CommitDialog.this.view, "The bug number appears to be invalid. Use it anyway?\n", "Confirm Bug ID", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); + return ignore != JOptionPane.YES_OPTION; } } return false; Modified: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/LogResultsPanel.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/LogResultsPanel.java 2009-05-02 21:43:01 UTC (rev 15177) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/LogResultsPanel.java 2009-05-03 01:32:07 UTC (rev 15178) @@ -134,7 +134,6 @@ String revision = String.valueOf( entry.getRevision() ); String date = entry.getDate() != null ? new SimpleDateFormat( jEdit.getProperty( "ips.yyyy-MM-dd_HH>mm>ss_Z", "yyyy-MM-dd HH:mm:ss Z" ), Locale.getDefault() ).format( entry.getDate() ) : "---"; String author = entry.getAuthor(); - //String comment = prepComment( entry.getMessage() ); String comment = entry.getMessage(); data[ i ][ 0 ] = revision; data[ i ][ 1 ] = date; @@ -379,15 +378,17 @@ } // Open browser - if (col == 3) { - final String url = fetchUrl((String)table.getValueAt(row, col)); - if (url != null) { - JMenuItem mi = new JMenuItem("Open link in browser"); - popup.add(mi); + if ( col == 3 ) { + final List<String> urls = fetchUrl( ( String ) table.getValueAt( row, col ) ); + if ( urls != null ) { + JMenuItem mi = new JMenuItem( urls.size() > 1 ? "Open links in browser" : "Open link in browser" ); + popup.add( mi ); mi.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { - infoviewer.InfoViewerPlugin.openURL(view, url); + for ( String url : urls ) { + infoviewer.InfoViewerPlugin.openURL( view, url ); + } } } ); @@ -410,15 +411,30 @@ return popup; } - private String fetchUrl( String comment ) { + private List<String> fetchUrl( String comment ) { String url = bugtraqProperties.getProperty( "bugtraq:url" ); if ( url == null ) { - return comment; + return null; } String logregex = bugtraqProperties.getProperty( "bugtraq:logregex" ); if ( logregex == null ) { - // TODO: check, should bugtraq:message be used? - return comment; + // if no logregex, use bugtraq:message as the regex + String regex = bugtraqProperties.getProperty( "bugtraq:message" ); + if ( regex == null ) { + return null; + } + regex = regex.replace( "%BUGID%", "(.*?)" ) + "$"; // NOPMD + Pattern p = Pattern.compile( regex, Pattern.DOTALL ); + Matcher m = p.matcher( comment ); + if ( m.find() ) { + String bug_number = m.group( 1 ); + List<String> list = new ArrayList<String>(); + String[] bugs = bug_number.split( "," ); + for ( String bug : bugs ) { + list.add( url.replaceAll( "%BUGID%", bug ) ); + } + return list; + } } String regex0 = null; String regex1 = null; @@ -432,6 +448,9 @@ regex0 = logregex; } } + else { + return null; + } if ( regex1 == null || regex1.length() == 0 ) { // only have regex0 to find bug pattern @@ -440,9 +459,13 @@ if ( m.find() ) { int start = m.start(); int end = m.end(); + List<String> list = new ArrayList<String>(); String bug_number = comment.substring( start, end ); - url = url.replaceAll( "%BUGID%", bug_number ); - return url; + String[] bugs = bug_number.split( "," ); + for ( String bug : bugs ) { + list.add( url.replaceAll( "%BUGID%", bug ) ); + } + return list; } } else { @@ -462,9 +485,13 @@ int length = e - s; start += s; end = start + length; + List<String> list = new ArrayList<String>(); String bug_number = comment.substring( start, start + length ); - url = url.replaceAll( "%BUGID%", bug_number ); - return url; + String[] bugs = bug_number.split( "," ); + for ( String bug : bugs ) { + list.add( url.replaceAll( "%BUGID%", bug ) ); + } + return list; } } } @@ -535,5 +562,12 @@ logRegex0 = logregex; } } + else { + // if no logregex, use bugtraq:message as the regex + String regex = bugtraqProperties.getProperty( "bugtraq:message" ); + if ( regex != null ) { + logRegex0 = regex.replace( "%BUGID%", "(.*?)" ) + "$"; + } + } } } \ No newline at end of file Modified: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/WrapCellRenderer.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/WrapCellRenderer.java 2009-05-02 21:43:01 UTC (rev 15177) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/WrapCellRenderer.java 2009-05-03 01:32:07 UTC (rev 15178) @@ -1,6 +1,7 @@ package ise.plugin.svn.gui; import java.awt.*; +import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.table.*; @@ -21,7 +22,7 @@ private WordSearcher searcher = null; - public void setSearcher(WordSearcher searcher) { + public void setSearcher( WordSearcher searcher ) { this.searcher = searcher; } @@ -30,11 +31,11 @@ public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) { this.table = table; this.column = column; - setEditable(false); + setEditable( false ); String content = value == null ? "" : value.toString().trim(); setText( content ); setBackground( isSelected ? selection : background ); - if (searcher != null) { + if ( searcher != null ) { searcher.search(); } return this; @@ -51,9 +52,24 @@ d.width = table.getColumnModel().getColumn( column ).getWidth(); FontMetrics fm = getFontMetrics( getFont() ); int stringWidth = fm.stringWidth( getText() ); - int rows = ( stringWidth / d.width ) + 2; - d.height = ( fm.getAscent() + fm.getDescent() ) * rows; + int rows = ( stringWidth / d.width ) + countLines(getText()); + + d.height = ( fm.getHeight() * rows ) + 5; // 5 pixels for padding } return d; } -} + + private int countLines( String text ) { + try { + BufferedReader reader = new BufferedReader( new StringReader( text ) ); + int lines = 0; + while ( reader.readLine() != null ) { + ++lines; + } + return lines; + } + catch ( Exception e ) { + return 1; + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |