|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.cvsclient.versioning; import java.io.File; import org.openide.awt.JMenuPlus; import org.netbeans.modules.javacvs.events.CommandDisplayerAdapter; import org.openide.util.*; import java.lang.ref.*; import java.util.*; import org.netbeans.modules.vcscore.util.WeakList; import org.netbeans.modules.vcscore.versioning.*; import org.netbeans.modules.cvsclient.FsCommandFactory; import org.netbeans.modules.cvsclient.NbJavaCvsFileSystem; import org.netbeans.modules.cvsclient.commands.diff.DiffCommandDisplayer; import org.netbeans.modules.cvsclient.commands.annotate.AnnotateDisplayer; import org.openide.filesystems.FileObject; import org.netbeans.modules.javacvs.commands.ClientProvider; import org.netbeans.lib.cvsclient.command.*; import org.netbeans.modules.javacvs.commands.FileSystemCommand; import org.netbeans.modules.cvsclient.commands.ErrorLogPanel; import org.netbeans.modules.cvsclient.commands.update.*; import org.netbeans.modules.javacvs.commands.CvsUpdate; import org.netbeans.modules.javacvs.commands.CvsDiff; import org.netbeans.modules.javacvs.commands.CvsAnnotate; import org.openide.nodes.Node; import java.awt.event.ActionEvent; import org.openide.util.actions.NodeAction; import javax.swing.JMenuItem; import javax.swing.JMenu; import org.openide.awt.JInlineMenu; /** * Node action for the revision explorer in javaCvs module * @author mkleint * @version */ public class JavaCvsVersioningAction extends NodeAction { protected WeakReference fileSystem = new WeakReference(null); protected WeakReference fileObject = new WeakReference(null); protected Collection selectedRevisionItems = null; /** Creates new RevisionAction * Gets revision actions from filesystem and acts on the givn file object. * @param fileSystem the file system to get the actions from * @param fo the file object to act on */ public JavaCvsVersioningAction() { } public String getName(){ return NbBundle.getBundle(JavaCvsVersioningAction.class). getString("CTL_Revision_Action"); // NOI18N } //------------------------------------------- //------------------------------------------- public boolean enable(Node[] nodes){ //D.deb("enable()"); // NOI18N return (nodes.length > 0 && nodes.length < 3); } //------------------------------------------- public HelpCtx getHelpCtx(){ //D.deb("getHelpCtx()"); // NOI18N return null; } //------------------------------------------- public void performAction(Node[] nodes){ //D.deb("performAction()"); // NOI18N } private JMenuItem createItem(String name, boolean switchable){ JMenuItem item=null ; item=new JMenuItem(g(name)); item.setActionCommand(name); item.addActionListener(this); // item.addMenuKeyListener(this); assignHelp (item, name); return item; } public JMenuItem getPopupPresenter() { Node[] nodes = getActivatedNodes(); JInlineMenu inlineMenu = new JInlineMenu(); LinkedList menu = new LinkedList(); HelpCtx.setHelpIDString (inlineMenu, JavaCvsVersioningAction.class.getName ()); JMenuItem item=null; boolean isOnOne = (nodes.length == 1); boolean isOnTwo = (nodes.length == 2); if (isOnOne) { item=createItem("JavaCvsVersioningAction.update", false); // NOI18N menu.add(item); item=createItem("JavaCvsVersioningAction.diff", false); // NOI18N menu.add(item); item=createItem("JavaCvsVersioningAction.merge", false); // NOI18N menu.add(item); item=createItem("JavaCvsVersioningAction.annotate", false); // NOI18N menu.add(item); } if (isOnTwo) { item=createItem("JavaCvsVersioningAction.merge2Rev", false); // NOI18N menu.add(item); item=createItem("JavaCvsVersioningAction.diff2Rev", false); // NOI18N menu.add(item); } inlineMenu.setMenuItems((JMenuItem[]) menu.toArray(new JMenuItem[menu.size()])); return inlineMenu; } public void setFileSystem(NbJavaCvsFileSystem fileSystem) { this.fileSystem = new WeakReference(fileSystem); } public void setFileObject(FileObject fileObject) { this.fileObject = new WeakReference(fileObject); } public void setSelectedRevisionItems(Collection items) { if (items == null) { this.selectedRevisionItems = null; return ; } this.selectedRevisionItems = new WeakList(items); } public void actionPerformed(final ActionEvent e){ String cmd = e.getActionCommand(); //D.deb("cmd="+cmd); // NOI18N //Node[] nodes = getActivatedNodes(); NbJavaCvsFileSystem fileSystem = (NbJavaCvsFileSystem) this.fileSystem.get(); FileObject fo = (FileObject) this.fileObject.get(); if (fileSystem == null || fo == null) return ; RevisionItem[] items = (RevisionItem[]) selectedRevisionItems.toArray(new RevisionItem[0]); /* if (nodes.length == 0) { //E.err("internal error nodes.length<1 TODO"); return ; } else { for (int i = 0; i < nodes.length; i++) { if (nodes[i] instanceof RevisionNode) { NbJavaCvsFileSystem nodeFS = (NbJavaCvsFileSystem) ((RevisionNode) nodes[i]).getFileSystem(); FileObject nodeFO = ((RevisionNode) nodes[i]).getFileObject(); if (fileSystem == null) fileSystem = nodeFS; else if (fileSystem != nodeFS) return ; if (fo == null) fo = nodeFO; else if (fo != nodeFO) return ; } } if (fileSystem == null) return ; } */ FileObject[] files = new FileObject[] {fo}; if (cmd.equals("JavaCvsVersioningAction.update")) { // NOI18N RevisionItem selItem = items[0]; CvsUpdate.UpdateImpl command = (CvsUpdate.UpdateImpl)fileSystem.createUpdate(); command.setFileObjects(files); command.setUpdateByRevision(getBranchOrRevision(selItem)); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } if (cmd.equals("JavaCvsVersioningAction.diff")) { // NOI18N RevisionItem selItem = items[0]; CvsDiff.DiffImpl command = (CvsDiff.DiffImpl)fileSystem.createDiff(); command.setFileObjects(files); command.setRevision1(getBranchOrRevision(selItem)); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); command.addDisplayerListener(new DiffCommandDisplayer((CvsDiff)command.getOuterClassInstance(), true)); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } if (cmd.equals("JavaCvsVersioningAction.annotate")) { // NOI18N RevisionItem selItem = items[0]; CvsAnnotate.AnnotateImpl command = (CvsAnnotate.AnnotateImpl)fileSystem.createAnnotate(); command.setFileObjects(files); command.setAnnotateByRevision(getBranchOrRevision(selItem)); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); command.addDisplayerListener(new AnnotateDisplayer((CvsAnnotate)command.getOuterClassInstance())); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } if (cmd.equals("JavaCvsVersioningAction.merge")) { // NOI18N RevisionItem selItem = items[0]; CvsUpdate.UpdateImpl command = (CvsUpdate.UpdateImpl)fileSystem.createUpdate(); command.setFileObjects(files); command.setMergeRevision1(getBranchOrRevision(selItem)); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } if (cmd.equals("JavaCvsVersioningAction.merge2Rev")) { // NOI18N RevisionItem item1 = items[0]; RevisionItem item2 = items[1]; CvsUpdate.UpdateImpl command = (CvsUpdate.UpdateImpl)fileSystem.createUpdate(); command.setFileObjects(files); command.setMergeRevision1(getBranchOrRevision(item1)); command.setMergeRevision2(getBranchOrRevision(item2)); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } if (cmd.equals("JavaCvsVersioningAction.diff2Rev")) { // NOI18N RevisionItem item1 = items[0]; RevisionItem item2 = items[1]; CvsDiff.DiffImpl command = (CvsDiff.DiffImpl)fileSystem.createDiff(); command.setFileObjects(files); command.setRevision1(getBranchOrRevision(item1)); command.setRevision2(getBranchOrRevision(item2)); CvsDiff diff = (CvsDiff)command.getOuterClassInstance(); diff.setIncludeStatusAndCheckout(true); command.addDisplayerListener(new ErrorLogPanel(command.getOuterClassInstance())); command.addDisplayerListener(new DiffCommandDisplayer((CvsDiff)command.getOuterClassInstance(), true)); fileSystem.prepareCommand(command.getOuterClassInstance()); command.startCommand(); } } private String getBranchOrRevision(RevisionItem item) { if (item.isBranch()) { String[] tags = item.getTagNames(); if (tags != null && tags.length > 0) { return tags[0]; } } return item.getRevision(); } private String g(String s) { return NbBundle.getBundle ("org.netbeans.modules.cvsclient.versioning.Bundle").getString (s); // NOI18N } private void assignHelp (JMenuItem item, String commandName) { HelpCtx.setHelpIDString (item, JavaCvsVersioningAction.class.getName () + "." + commandName); // NOI18N } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.