From: <dal...@us...> - 2008-02-01 01:31:40
|
Revision: 11660 http://jedit.svn.sourceforge.net/jedit/?rev=11660&view=rev Author: daleanson Date: 2008-01-31 17:31:38 -0800 (Thu, 31 Jan 2008) Log Message: ----------- refactoring of BrowseRepositoryPanel to move the popup menu actions to separate classes and configurable from the props file. Modified Paths: -------------- plugins/SVNPlugin/trunk/SVNPlugin.props plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/BrowseRepositoryPanel.java Added Paths: ----------- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/BRAction.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Branch.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Checkout.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Copy.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Delete.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Diff.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Export.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Import.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Info.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Lock.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Log.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/MkDir.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Move.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Property.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Tag.java plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Unlock.java Modified: plugins/SVNPlugin/trunk/SVNPlugin.props =================================================================== --- plugins/SVNPlugin/trunk/SVNPlugin.props 2008-01-31 19:48:36 UTC (rev 11659) +++ plugins/SVNPlugin/trunk/SVNPlugin.props 2008-02-01 01:31:38 UTC (rev 11660) @@ -55,50 +55,85 @@ ise.plugin.svn.action.code.2=ise.plugin.svn.pv.UpdateActor ise.plugin.svn.action.label.3=Commit... ise.plugin.svn.action.code.3=ise.plugin.svn.pv.CommitActor -ise.plugin.svn.action.label.4=Diff... -ise.plugin.svn.action.code.4=ise.plugin.svn.pv.DiffActor -ise.plugin.svn.action.label.5=- -ise.plugin.svn.action.label.6=Revert... -ise.plugin.svn.action.code.6=ise.plugin.svn.pv.RevertActor -ise.plugin.svn.action.label.7=Add -ise.plugin.svn.action.code.7=ise.plugin.svn.pv.AddActor -ise.plugin.svn.action.label.8=Resolve -ise.plugin.svn.action.code.8=ise.plugin.svn.pv.ResolvedActor -ise.plugin.svn.action.label.9=Delete... -ise.plugin.svn.action.code.9=ise.plugin.svn.pv.DeleteActor -ise.plugin.svn.action.label.10=- -ise.plugin.svn.action.label.11=Lock -ise.plugin.svn.action.code.11=ise.plugin.svn.pv.LockActor -ise.plugin.svn.action.label.12=Unlock -ise.plugin.svn.action.code.12=ise.plugin.svn.pv.UnlockActor -ise.plugin.svn.action.label.13=- -ise.plugin.svn.action.label.14=Properties -ise.plugin.svn.action.code.14=ise.plugin.svn.pv.PropertyActor -ise.plugin.svn.action.label.15=Info -ise.plugin.svn.action.code.15=ise.plugin.svn.pv.InfoActor -ise.plugin.svn.action.label.16=Log... -ise.plugin.svn.action.code.16=ise.plugin.svn.pv.LogActor -ise.plugin.svn.action.label.17=- -ise.plugin.svn.action.label.18=Checkout... -ise.plugin.svn.action.code.18=ise.plugin.svn.pv.CheckoutActor -ise.plugin.svn.action.label.19=Switch... -ise.plugin.svn.action.code.19=ise.plugin.svn.pv.SwitchActor -ise.plugin.svn.action.label.20=Cleanup -ise.plugin.svn.action.code.20=ise.plugin.svn.pv.CleanupActor -ise.plugin.svn.action.label.21=- -ise.plugin.svn.action.label.22=Copy... -ise.plugin.svn.action.code.22=ise.plugin.svn.pv.CopyActor -ise.plugin.svn.action.label.23=Move... -ise.plugin.svn.action.code.23=ise.plugin.svn.pv.MoveActor -ise.plugin.svn.action.label.24=Import... -ise.plugin.svn.action.code.24=ise.plugin.svn.pv.ImportActor -ise.plugin.svn.action.label.25=Export... -ise.plugin.svn.action.code.25=ise.plugin.svn.pv.ExportActor +ise.plugin.svn.action.label.4=- +ise.plugin.svn.action.label.5=Revert... +ise.plugin.svn.action.code.5=ise.plugin.svn.pv.RevertActor +ise.plugin.svn.action.label.6=Add +ise.plugin.svn.action.code.6=ise.plugin.svn.pv.AddActor +ise.plugin.svn.action.label.7=Resolve +ise.plugin.svn.action.code.7=ise.plugin.svn.pv.ResolvedActor +ise.plugin.svn.action.label.8=Delete... +ise.plugin.svn.action.code.8=ise.plugin.svn.pv.DeleteActor +ise.plugin.svn.action.label.9=- +ise.plugin.svn.action.label.10=Info +ise.plugin.svn.action.code.10=ise.plugin.svn.pv.InfoActor +ise.plugin.svn.action.label.11=Log... +ise.plugin.svn.action.code.11=ise.plugin.svn.pv.LogActor +ise.plugin.svn.action.label.12=Properties +ise.plugin.svn.action.code.12=ise.plugin.svn.pv.PropertyActor +ise.plugin.svn.action.label.13=Diff... +ise.plugin.svn.action.code.13=ise.plugin.svn.pv.DiffActor +ise.plugin.svn.action.label.14=- +ise.plugin.svn.action.label.15=Checkout... +ise.plugin.svn.action.code.15=ise.plugin.svn.pv.CheckoutActor +ise.plugin.svn.action.label.16=Switch... +ise.plugin.svn.action.code.16=ise.plugin.svn.pv.SwitchActor +ise.plugin.svn.action.label.17=Cleanup +ise.plugin.svn.action.code.17=ise.plugin.svn.pv.CleanupActor +ise.plugin.svn.action.label.18=- +ise.plugin.svn.action.label.19=Copy... +ise.plugin.svn.action.code.19=ise.plugin.svn.pv.CopyActor +ise.plugin.svn.action.label.20=Move... +ise.plugin.svn.action.code.20=ise.plugin.svn.pv.MoveActor +ise.plugin.svn.action.label.21=Import... +ise.plugin.svn.action.code.21=ise.plugin.svn.pv.ImportActor +ise.plugin.svn.action.label.22=Export... +ise.plugin.svn.action.code.22=ise.plugin.svn.pv.ExportActor +ise.plugin.svn.action.label.23=- +ise.plugin.svn.action.label.24=Lock +ise.plugin.svn.action.code.24=ise.plugin.svn.pv.LockActor +ise.plugin.svn.action.label.25=Unlock +ise.plugin.svn.action.code.25=ise.plugin.svn.pv.UnlockActor # register subversion commands with ProjectViewer plugin.projectviewer.ise.plugin.svn.SVNPlugin.context-menu-actions=ise.plugin.svn.pv.SVNAction +# subversion commands for SVN Browser +ise.plugin.svn.gui.br.label.1=Checkout... +ise.plugin.svn.gui.br.code.1=ise.plugin.svn.gui.br.Checkout +ise.plugin.svn.gui.br.label.2=Info +ise.plugin.svn.gui.br.code.2=ise.plugin.svn.gui.br.Info +ise.plugin.svn.gui.br.label.3=Log +ise.plugin.svn.gui.br.code.3=ise.plugin.svn.gui.br.Log +ise.plugin.svn.gui.br.label.4=Properties +ise.plugin.svn.gui.br.code.4=ise.plugin.svn.gui.br.Property +ise.plugin.svn.gui.br.label.5=Diff +ise.plugin.svn.gui.br.code.5=ise.plugin.svn.gui.br.Diff +ise.plugin.svn.gui.br.label.6=- +ise.plugin.svn.gui.br.label.7=Tag +ise.plugin.svn.gui.br.code.7=ise.plugin.svn.gui.br.Tag +ise.plugin.svn.gui.br.label.8=Branch +ise.plugin.svn.gui.br.code.8=ise.plugin.svn.gui.br.Branch +ise.plugin.svn.gui.br.label.9=- +ise.plugin.svn.gui.br.label.10=Copy +ise.plugin.svn.gui.br.code.10=ise.plugin.svn.gui.br.Copy +ise.plugin.svn.gui.br.label.11=Move +ise.plugin.svn.gui.br.code.11=ise.plugin.svn.gui.br.Move +ise.plugin.svn.gui.br.label.12=Make Dir +ise.plugin.svn.gui.br.code.12=ise.plugin.svn.gui.br.Move +ise.plugin.svn.gui.br.label.13=Delete +ise.plugin.svn.gui.br.code.13=ise.plugin.svn.gui.br.Delete +ise.plugin.svn.gui.br.label.14=- +ise.plugin.svn.gui.br.label.15=Import +ise.plugin.svn.gui.br.code.15=ise.plugin.svn.gui.br.Import +ise.plugin.svn.gui.br.label.16=Export +ise.plugin.svn.gui.br.code.16=ise.plugin.svn.gui.br.Export +ise.plugin.svn.gui.br.label.17=- +ise.plugin.svn.gui.br.label.18=Lock +ise.plugin.svn.gui.br.code.18=ise.plugin.svn.gui.br.Lock +ise.plugin.svn.gui.br.label.19=Unlock +ise.plugin.svn.gui.br.code.19=ise.plugin.svn.gui.br.Unlock # application messages ise.plugin.svn.gui.StatusResultsPanel.modified=Modified files (need committed?): Modified: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/BrowseRepositoryPanel.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/BrowseRepositoryPanel.java 2008-01-31 19:48:36 UTC (rev 11659) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/BrowseRepositoryPanel.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -55,7 +55,9 @@ import ise.plugin.svn.gui.RepositoryComboBox; import ise.plugin.svn.gui.RevisionDialog; import ise.plugin.svn.gui.TagBranchDialog; +import ise.plugin.svn.gui.br.*; import ise.plugin.svn.library.GUIUtils; +import ise.plugin.svn.library.PrivilegedAccessor; import org.gjt.sp.jedit.GUIUtilities; import org.tmatesoft.svn.core.wc.*; @@ -397,589 +399,137 @@ } } + private ActionListener createPopupMenuActionListener(final BRAction internal) { + final String repositoryUrl; + if ( chooser != null ) { + RepositoryData rd = chooser.getSelectedRepository(); + if ( rd != null ) { + repositoryUrl = rd.getURL(); + } + else { + repositoryUrl = null; + } + } + else { + repositoryUrl = null; + } + return new ActionListener() { + public void actionPerformed(ActionEvent ae) { + internal.init(view, repositoryUrl, tree, username, password); + internal.actionPerformed(ae); + } + }; + } + /** * Create the context menu. */ private JPopupMenu createPopupMenu() { // update, commit, revert, add, log, need to add others as appropriate final JPopupMenu pm = new JPopupMenu(); + String repositoryUrl = null; + if ( chooser != null ) { + RepositoryData rd = chooser.getSelectedRepository(); + if ( rd != null ) { + repositoryUrl = rd.getURL(); + } + } + String pbase = "ise.plugin.svn.gui.br."; + for ( int i = 1; i < 100; i++ ) { + String label = jEdit.getProperty( pbase + "label." + i ); + System.out.println( "+++++ label = " + label ); + if ( label == null ) { + break; + } + if ( label.equals( "-" ) ) { + pm.addSeparator(); + continue; + } + String classname = jEdit.getProperty( pbase + "code." + i ); + System.out.println( "+++++ classname = " + classname ); + if ( classname == null ) { + continue; + } + JMenuItem item = null; + try { + BRAction action = ( BRAction ) PrivilegedAccessor.getNewInstance( classname, null ); + item = new JMenuItem( label ); + item.addActionListener(createPopupMenuActionListener(action)); + pm.add( item ); + } + catch ( Exception e ) { + // class not found or instantiation exception, don't worry + // about it, assume it's a typo + e.printStackTrace(); + continue; + } + } + + /* JMenuItem mi = new JMenuItem( "Checkout..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - String url = null; - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - url = sb.toString(); - break; - } - } - RepositoryData data = new RepositoryData(); - data.setURL( url ); - data.setUsername( username ); - data.setPassword( password ); - CheckoutAction action = new CheckoutAction( view, data ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Checkout( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Info" ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( node.isExternal() ) { - paths.add( node.getRepositoryLocation() ); - } - else { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - } - SVNData data = new SVNData(); - data.setPaths( paths ); - data.setPathsAreURLs( true ); - data.setUsername( username ); - data.setPassword( password ); - InfoAction action = new InfoAction( view, data ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Info( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Log..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( node.isExternal() ) { - paths.add( node.getRepositoryLocation() ); - } - else { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - } - LogData data = new LogData(); - data.setPaths( paths ); - data.setPathsAreURLs( true ); - data.setUsername( username ); - data.setPassword( password ); - LogAction action = new LogAction( view, data ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Log( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Properties" ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - boolean hasDirectory = false; - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( !hasDirectory && !node.isLeaf() ) { - hasDirectory = true; - } - } - } - PropertyData data = new PropertyData(); - data.setPaths( paths ); - data.setPathsAreURLs( true ); - data.setUsername( username ); - data.setPassword( password ); - data.setHasDirectory( hasDirectory ); - PropertyAction action = new PropertyAction( view, data ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Property( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Diff" ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - boolean hasDirectory = false; - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( !hasDirectory && !node.isLeaf() ) { - hasDirectory = true; - } - } - } - String path1 = paths.size() > 0 ? paths.get(0) : null; - String path2 = paths.size() > 1 ? paths.get(1) : null; - DiffData data = new DiffData(); - data.addPath(path1); - data.addPath(path2); - data.setPathsAreURLs(true); - data.setUsername(username); - data.setPassword(password); - if (chooser != null) { - RepositoryData rd = chooser.getSelectedRepository(); - data.setURL(rd.getURL()); - } - RemoteDiffAction action = new RemoteDiffAction(view, data); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Diff( view, repositoryUrl, tree, username, password ) ); pm.addSeparator(); mi = new JMenuItem( "Copy..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - boolean hasDirectory = false; - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( !hasDirectory && !node.isLeaf() ) { - hasDirectory = true; - } - } - } - CopyDialog dialog = new CopyDialog( view, null, chooser.getSelectedItem().toString(), paths ); - GUIUtils.center( view, dialog ); - dialog.setVisible( true ); - CopyData data = dialog.getData(); - if ( data == null ) { - return ; // user canceled - } + mi.addActionListener( new Copy( view, repositoryUrl, tree, username, password ) ); - if ( username != null && password != null ) { - data.setUsername( username ); - data.setPassword( password ); - } - - CopyAction action = new CopyAction( view, data ); - action.actionPerformed( null ); - } - } - ); - mi = new JMenuItem( "Make Directory..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - String defaultDestination = null; - boolean hasDirectory = false; - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { // one path, one loop - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder from = new StringBuilder(); - String preface = parts[ 0 ].toString(); - if ( preface.endsWith( "/" ) ) { - preface = preface.substring( 0, preface.length() - 1 ); - } - from.append( preface ); - for ( int i = 1; i < parts.length; i++ ) { - from.append( "/" ).append( parts[ i ].toString() ); - } - defaultDestination = from.toString(); - paths.add( defaultDestination ); + mi.addActionListener( new MkDir( view, repositoryUrl, tree, username, password ) ); - DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); - if ( !hasDirectory && !node.isLeaf() ) { - hasDirectory = true; - } - } - } - - if ( !hasDirectory ) { - JOptionPane.showMessageDialog( view, "Please select a directory in which to create the new directory.", "Error", JOptionPane.ERROR_MESSAGE ); - return ; - } - MkDirAction action = new MkDirAction( view, paths, username, password, defaultDestination ); - action.actionPerformed( null ); - } - } - ); - mi = new JMenuItem( "Tag..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - String from_url = null; - String defaultDestination = null; - for ( TreePath path : tree_paths ) { // should be a single loop - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder from = new StringBuilder(); - StringBuilder to = new StringBuilder(); - String preface = parts[ 0 ].toString(); - if ( preface.endsWith( "/" ) ) { - preface = preface.substring( 0, preface.length() - 1 ); - } - from.append( preface ); - to.append( preface ); - for ( int i = 1; i < parts.length; i++ ) { - from.append( "/" ).append( parts[ i ].toString() ); - } - for ( int i = 1; i < parts.length - 1; i++ ) { - if ( parts[ i ].toString().equals( "branches" ) ) { - continue; - } - to.append( "/" ).append( parts[ i ].toString() ); - } - from_url = from.toString(); - defaultDestination = to.append( "/tags" ).toString(); - break; - } - } + mi.addActionListener( new Tag( view, repositoryUrl, tree, username, password ) ); - TagBranchDialog dialog = new TagBranchDialog( view, TagBranchDialog.TAG_DIALOG, from_url, defaultDestination ); - GUIUtils.center( view, dialog ); - dialog.setVisible( true ); - CopyData cd = dialog.getData(); - if ( cd != null ) { - if ( username != null && password != null ) { - cd.setUsername( username ); - cd.setPassword( password ); - } - cd.setTitle( "Tag" ); - CopyAction action = new CopyAction( view, cd ); - action.actionPerformed( null ); - } - } - } - ); - mi = new JMenuItem( "Branch..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - String from_url = null; - String defaultDestination = null; - for ( TreePath path : tree_paths ) { // should be a single loop - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder from = new StringBuilder(); - StringBuilder to = new StringBuilder(); - String preface = parts[ 0 ].toString(); - if ( preface.endsWith( "/" ) ) { - preface = preface.substring( 0, preface.length() - 1 ); - } - from.append( preface ); - to.append( preface ); - for ( int i = 1; i < parts.length; i++ ) { - from.append( "/" ).append( parts[ i ].toString() ); - } - for ( int i = 1; i < parts.length - 1; i++ ) { - to.append( "/" ).append( parts[ i ].toString() ); - } - from_url = from.toString(); - defaultDestination = to.append( "/branches" ).toString(); - break; - } - } + mi.addActionListener( new Branch( view, repositoryUrl, tree, username, password ) ); - TagBranchDialog dialog = new TagBranchDialog( view, TagBranchDialog.BRANCH_DIALOG, from_url, defaultDestination ); - GUIUtils.center( view, dialog ); - dialog.setVisible( true ); - CopyData cd = dialog.getData(); - if ( cd != null ) { - if ( username != null && password != null ) { - cd.setUsername( username ); - cd.setPassword( password ); - } - cd.setTitle( "Branch" ); - CopyAction action = new CopyAction( view, cd ); - action.actionPerformed( null ); - } - } - } - ); - mi = new JMenuItem( "Move..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - String url = null; - String defaultDestination = null; - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - url = sb.toString(); - paths.add( url ); - defaultDestination = url; - } - } + mi.addActionListener( new Move( view, repositoryUrl, tree, username, password ) ); - MoveDialog dialog = new MoveDialog( view, defaultDestination, paths ); - GUIUtils.center( view, dialog ); - dialog.setVisible( true ); - CopyData cd = dialog.getData(); - if ( cd != null ) { - if ( username != null && password != null ) { - cd.setUsername( username ); - cd.setPassword( password ); - } - - MoveAction action = new MoveAction( view, cd ); - action.actionPerformed( null ); - } - } - } - ); - mi = new JMenuItem( "Import..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - ImportAction action = new ImportAction( view ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Import( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Export..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - if ( tree_paths.length > 1 ) { - JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - ExportAction action = new ExportAction( view, username, password, paths ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Export( view, repositoryUrl, tree, username, password ) ); pm.addSeparator(); mi = new JMenuItem( "Delete..." ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - DeleteData data = new DeleteData(); - data.setPaths( paths ); - data.setUsername( username ); - data.setPassword( password ); - data.setPathsAreURLs( true ); - DeleteAction action = new DeleteAction( view, data ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Delete( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Lock" ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - LockAction action = new LockAction( view, paths, username, password, true ); - action.actionPerformed( ae ); - } - } - ); + mi.addActionListener( new Lock( view, repositoryUrl, tree, username, password ) ); mi = new JMenuItem( "Unlock" ); pm.add( mi ); - mi.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent ae ) { - TreePath[] tree_paths = tree.getSelectionPaths(); - if ( tree_paths.length == 0 ) { - return ; - } - List<String> paths = new ArrayList<String>(); - for ( TreePath path : tree_paths ) { - if ( path != null ) { - Object[] parts = path.getPath(); - StringBuilder sb = new StringBuilder(); - sb.append( parts[ 0 ] ); - for ( int i = 1; i < parts.length; i++ ) { - sb.append( "/" ).append( parts[ i ].toString() ); - } - String url = sb.toString(); - paths.add( url ); - } - } - UnlockAction action = new UnlockAction( view, paths, username, password, true ); - action.actionPerformed( ae ); - } - } - ); - + mi.addActionListener( new Unlock( view, repositoryUrl, tree, username, password ) ); + */ return pm; } Added: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/BRAction.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/BRAction.java (rev 0) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/BRAction.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -0,0 +1,62 @@ +/* +Copyright (c) 2007, Dale Anson +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package ise.plugin.svn.gui.br; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import org.gjt.sp.jedit.View; + + +/** + * Base class for action listeners for the popup menu in the BrowseRepositoryPanel. + */ +public abstract class BRAction implements ActionListener { + + protected View view = null; + protected String repositoryUrl = null; + protected JTree tree = null; + protected String username = null; + protected String password = null; + + public void init( View view, String repositoryUrl, JTree tree, String username, String password ) { + if ( view == null ) + throw new IllegalArgumentException( "view may not be null" ); + if ( tree == null ) + throw new IllegalArgumentException( "tree may not be null" ); + this.view = view; + this.repositoryUrl = repositoryUrl; + this.tree = tree; + this.username = username; + this.password = password; + } + + public abstract void actionPerformed( ActionEvent ae ); +} Added: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Branch.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Branch.java (rev 0) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Branch.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -0,0 +1,100 @@ +/* +Copyright (c) 2007, Dale Anson +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package ise.plugin.svn.gui.br; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import org.gjt.sp.jedit.View; +import ise.plugin.svn.action.*; +import ise.plugin.svn.gui.*; +import ise.plugin.svn.data.*; +import ise.plugin.svn.library.GUIUtils; +import java.util.*; + + +public class Branch extends BRAction { + +/** + * public Branch( View view, String repositoryUrl, JTree tree, String username, String password ) { + * super( view, repositoryUrl, tree, username, password ); + * } + */ + + public void actionPerformed( ActionEvent ae ) { + TreePath[] tree_paths = tree.getSelectionPaths(); + if ( tree_paths.length == 0 ) { + return ; + } + if ( tree_paths.length > 1 ) { + JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); + return ; + } + String from_url = null; + String defaultDestination = null; + for ( TreePath path : tree_paths ) { // should be a single loop + if ( path != null ) { + Object[] parts = path.getPath(); + StringBuilder from = new StringBuilder(); + StringBuilder to = new StringBuilder(); + String preface = parts[ 0 ].toString(); + if ( preface.endsWith( "/" ) ) { + preface = preface.substring( 0, preface.length() - 1 ); + } + from.append( preface ); + to.append( preface ); + for ( int i = 1; i < parts.length; i++ ) { + from.append( "/" ).append( parts[ i ].toString() ); + } + for ( int i = 1; i < parts.length - 1; i++ ) { + to.append( "/" ).append( parts[ i ].toString() ); + } + from_url = from.toString(); + defaultDestination = to.append( "/branches" ).toString(); + break; + } + } + + TagBranchDialog dialog = new TagBranchDialog( view, TagBranchDialog.BRANCH_DIALOG, from_url, defaultDestination ); + GUIUtils.center( view, dialog ); + dialog.setVisible( true ); + CopyData cd = dialog.getData(); + if ( cd != null ) { + if ( username != null && password != null ) { + cd.setUsername( username ); + cd.setPassword( password ); + } + cd.setTitle( "Branch" ); + CopyAction action = new CopyAction( view, cd ); + action.actionPerformed( null ); + } + } +} Added: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Checkout.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Checkout.java (rev 0) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Checkout.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -0,0 +1,79 @@ +/* +Copyright (c) 2007, Dale Anson +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package ise.plugin.svn.gui.br; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import org.gjt.sp.jedit.View; +import ise.plugin.svn.action.*; +import ise.plugin.svn.data.RepositoryData; + + +public class Checkout extends BRAction { + +/** + * public Checkout( View view, String repositoryUrl, JTree tree, String username, String password ) { + * super( view, repositoryUrl, tree, username, password ); + * } + */ + + public void actionPerformed( ActionEvent ae ) { + TreePath[] paths = tree.getSelectionPaths(); + + if ( paths.length == 0 ) { + return ; + } + if ( paths.length > 1 ) { + JOptionPane.showMessageDialog( view, "Please select a single entry.", "Too many selections", JOptionPane.ERROR_MESSAGE ); + return ; + } + String url = null; + for ( TreePath path : paths ) { + if ( path != null ) { + Object[] parts = path.getPath(); + StringBuilder sb = new StringBuilder(); + sb.append( parts[ 0 ] ); + for ( int i = 1; i < parts.length; i++ ) { + sb.append( "/" ).append( parts[ i ].toString() ); + } + url = sb.toString(); + break; + } + } + RepositoryData data = new RepositoryData(); + data.setURL( url ); + data.setUsername( username ); + data.setPassword( password ); + CheckoutAction action = new CheckoutAction( view, data ); + action.actionPerformed( ae ); + } +} Added: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Copy.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Copy.java (rev 0) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Copy.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -0,0 +1,92 @@ +/* +Copyright (c) 2007, Dale Anson +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package ise.plugin.svn.gui.br; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import org.gjt.sp.jedit.View; +import ise.plugin.svn.action.*; +import ise.plugin.svn.gui.CopyDialog; +import ise.plugin.svn.gui.DirTreeNode; +import ise.plugin.svn.data.*; +import ise.plugin.svn.library.GUIUtils; +import java.util.*; + + +public class Copy extends BRAction { + +/** + * public Copy( View view, String repositoryUrl, JTree tree, String username, String password ) { + * super( view, repositoryUrl, tree, username, password ); + * } + */ + + public void actionPerformed( ActionEvent ae ) { + TreePath[] tree_paths = tree.getSelectionPaths(); + if ( tree_paths.length == 0 ) { + return ; + } + boolean hasDirectory = false; + List<String> paths = new ArrayList<String>(); + for ( TreePath path : tree_paths ) { + if ( path != null ) { + Object[] parts = path.getPath(); + StringBuilder sb = new StringBuilder(); + sb.append( parts[ 0 ] ); + for ( int i = 1; i < parts.length; i++ ) { + sb.append( "/" ).append( parts[ i ].toString() ); + } + String url = sb.toString(); + paths.add( url ); + DirTreeNode node = ( DirTreeNode ) path.getLastPathComponent(); + if ( !hasDirectory && !node.isLeaf() ) { + hasDirectory = true; + } + } + } + CopyDialog dialog = new CopyDialog( view, null, repositoryUrl, paths ); + GUIUtils.center( view, dialog ); + dialog.setVisible( true ); + CopyData data = dialog.getData(); + if ( data == null ) { + return ; // user canceled + } + + if ( username != null && password != null ) { + data.setUsername( username ); + data.setPassword( password ); + } + + CopyAction action = new CopyAction( view, data ); + action.actionPerformed( null ); + } +} Added: plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Delete.java =================================================================== --- plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Delete.java (rev 0) +++ plugins/SVNPlugin/trunk/src/ise/plugin/svn/gui/br/Delete.java 2008-02-01 01:31:38 UTC (rev 11660) @@ -0,0 +1,78 @@ +/* +Copyright (c) 2007, Dale Anson +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package ise.plugin.svn.gui.br; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import org.gjt.sp.jedit.View; +import ise.plugin.svn.action.*; +import ise.plugin.svn.gui.*; +import ise.plugin.svn.data.*; +import ise.plugin.svn.library.GUIUtils; +import java.util.*; + + +public class Delete extends BRAction { + +/** + * public Delete( View view, String repositoryUrl, JTree tree, String username, String password ) { + * super( view, repositoryUrl, tree, username, password ); + * } + */ + + public void actionPerformed( ActionEvent ae ) { + TreePath[] tree_paths = tree.getSelectionPaths(); + if ( tree_paths.length == 0 ) { + return ; + } + List<String> paths = new ArrayList<String>(); + for ( TreePath path : tree_paths ) { + if ( path != null ) { + Object[] parts = path.getPath(); + StringBuilder sb... [truncated message content] |