/* * * Perforce/JBuilder Opentool * Copyright (C) 2002 Mark Ackerman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package com.dafreels.opentools.actions; //JBuilder import java.awt.Cursor; import javax.swing.Icon; import com.borland.primetime.editor.EditorAction; import com.borland.primetime.editor.EditorPane; import com.borland.primetime.ide.Browser; import com.borland.primetime.ide.BrowserAction; import com.borland.primetime.node.FileNode; import com.borland.primetime.node.Node; import com.dafreels.opentools.Main; import com.dafreels.opentools.MessageWriter; import com.dafreels.vcs.command.CommandTool; import com.dafreels.vcs.command.MessageFormatter; /** * Title: Perforce Open Tool * Description: base class for Perforce Actions * Copyright: Copyright (c) 2002 * Company: * @author Mark Ackerman * @version 1.0 */ public abstract class PerforceAction extends BrowserAction { protected boolean m_onFileTabMenu; public PerforceAction( String text, String toolTip, Icon icon, boolean onFileTabMenu) { super(text); if (toolTip != null) { setLongText(toolTip); } if (icon != null) { setSmallIcon(icon); } m_onFileTabMenu = onFileTabMenu; } /** * * @param browser the Active Browser * @param cmd the Command to execute * @return the affected nodes */ protected Node[] getSelectedNodes( Browser browser, com.dafreels.vcs.command.Command cmd) { Node[] nodes; String tempFileName = ""; if (m_onFileTabMenu) { Node node = browser.getActiveNode(); if (node != null) { tempFileName = node.getLongDisplayName(); if (cmd != null) { cmd.addPath(fixupName(tempFileName)); } nodes = new Node[1]; nodes[0] = node; } else { return null; } } else { nodes = browser.getProjectView().getSelectedNodes(browser.getActiveProject()); for (int i = 0; i < nodes.length; i++) { tempFileName = ((FileNode) nodes[i]).getLongDisplayName(); if (cmd != null) { cmd.addPath(tempFileName); } } } return nodes; } /** * give subclasses the chance to fixup the name of the file. by default * the same fileName is returned that is passed in * * @param fileName the filename on disk * @return the fixed up filename on disk */ protected String fixupName(String fileName) { return fileName; } /** * run the Command cmd. * @param browser the current Browser * @param cmd the Command to run * @return true if the Command had no errors. */ protected boolean runCommand( Browser browser, com.dafreels.vcs.command.Command cmd) { return runCommand(browser, cmd, false); } protected boolean runCommand( Browser browser, com.dafreels.vcs.command.Command cmd, boolean outputExtraLines) { Cursor savedEditorCursor = null; EditorPane editor = null; try { editor = EditorAction.getFocusedEditor(); Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR); if (editor != null) { savedEditorCursor = editor.getCursor(); editor.setCursor(waitCursor); } browser.setCursor(waitCursor); //Run the command CommandTool.runCommand(cmd, Main.m_props); //Output the p4 messages return outputMessages(outputExtraLines); } finally { browser.setCursor(Cursor.getDefaultCursor()); if (editor != null && savedEditorCursor != null) { editor.setCursor(savedEditorCursor); } } } /** * output the error messages and stdout messages * @return true if there are not error messages */ protected boolean outputMessages(boolean outputExtraLines) { boolean success = MessageFormatter.getInstance().getErrorMessageCount() == 0; MessageWriter.outputErrorMessages(MessageFormatter.getInstance()); if (Main.m_props.showOutput() || (outputExtraLines && MessageFormatter.getMessageCount() > 1)) { //Output the p4 messages MessageWriter.outputMessages(MessageFormatter.getInstance()); } return success; } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 4090 | David Freels |
Fixed bug where paths with spaces would not work. Also checked in new code or JBuilderX. |
||
#3 | 3651 | David Freels | Remove file extension limitations. | ||
#2 | 2994 | Mark E. Ackerman |
changed for version 1.0.7. Added display of submitted changelists, redo sync, updated icons, misc bug fixes and improvements. |
||
#1 | 1873 | Mark E. Ackerman | Version 1.0 build. |