|
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-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.cvsclient;
import javax.swing.*;
import org.openide.util.*;
import org.openide.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import java.beans.*;
import java.lang.reflect.*;
import org.netbeans.modules.javacvs.events.*;
import org.netbeans.modules.javacvs.commands.*;
import org.netbeans.modules.javacvs.FsGlobalOptions;
import org.netbeans.modules.vcscore.settings.GeneralVcsSettings;
import javax.accessibility.*;
//import org.netbeans.modules.javacvs.*;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileSystem;
import org.openide.filesystems.FileStateInvalidException;
import org.openide.*;
import org.openide.windows.*;
import org.netbeans.modules.cvsclient.NbJavaCvsFileSystem;
import org.netbeans.modules.cvsclient.NbJavaCvsStatusManager;
import org.netbeans.modules.javacvs.customizers.CustomizerPropChangeSupport;
import org.netbeans.modules.javacvs.customizers.GlobalOptionsCustomizer;
import org.netbeans.modules.cvsclient.actions.*;
import org.netbeans.modules.cvsclient.commands.add.*;
import org.netbeans.modules.cvsclient.commands.*;
import org.netbeans.modules.cvsclient.commands.annotate.*;
import org.netbeans.modules.cvsclient.commands.commit.*;
import org.netbeans.modules.cvsclient.commands.remove.*;
import org.netbeans.modules.cvsclient.commands.checkout.*;
import org.netbeans.modules.cvsclient.commands.diff.*;
import org.netbeans.modules.cvsclient.commands.log.*;
import org.netbeans.modules.cvsclient.commands.tag.*;
import org.netbeans.modules.cvsclient.commands.grouping.*;
import org.netbeans.modules.javacvs.commands.*;
import org.netbeans.modules.vcscore.actions.*;
import org.netbeans.modules.vcscore.grouping.*;
import org.netbeans.modules.cvsclient.commands.status.*;
import org.netbeans.modules.cvsclient.commands.update.*;
import org.netbeans.lib.cvsclient.commandLine.GetOpt;
import org.netbeans.lib.cvsclient.command.*;
import org.openide.util.SharedClassObject;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import org.openide.DialogDisplayer;
import org.openide.ErrorManager;
import org.openide.windows.WindowManager;
/** factory that creates instances of commands. Can be used for feeding
* the instances with default parameters etc.
* Should be used only for default cvs commands configurable by user.
*
* Static methods included here handle the starting and NbGUI placement of the commands.
* @author mkleint
*
*/
public class FsCommandFactory extends JavaCvsCommandFactory {
private static final int HIST_LIST_MAX_COUNT = 20;
private static transient HashMap historyLists;
private HashMap runtimeFolders;
private CommandActionSupporter supporter = null;
private PropertyChangeListener propChangeListener;
private java.util.List limitedList;
private JavaCvsRuntimeCommandsProvider independentRuntimeProvider = null;
protected FsCommandFactory() {
super();
propChangeListener = new PropertyChangeListener() {
public void propertyChange(final PropertyChangeEvent event) {
settingsChanged(event.getPropertyName(), event.getOldValue(), event.getNewValue());
}
};
JavaCvsSettings settings = (JavaCvsSettings)SharedClassObject.findObject(
JavaCvsSettings.class, true);
settings.addPropertyChangeListener(WeakListener.propertyChange(propChangeListener, settings));
historyLists = new HashMap();
runtimeFolders = new HashMap();
limitedList = new LinkedList();
limitedList.add(CvsCommit.class);
// limitedList.add(CvsUpdate.class);
limitedList.add(CvsAdd.class);
limitedList.add(CvsRemove.class);
// limitedList.add(CvsCheckout.class);
limitedList.add(CvsImport.class);
limitedList.add(CvsTag.class);
limitedList.add(CvsExport.class);
}
public boolean showDisplayerWhenLimited(Class commandClass) {
return !limitedList.contains(commandClass);
}
/**
* @deprecated
*/
public static JavaCvsCommandFactory getInstance() {
if (instance == null) {
instance = new FsCommandFactory();
}
return instance;
}
static void uninstall() {
instance = null;
historyLists = null;
}
public static FsCommandFactory getFsInstance() {
if (instance == null) {
instance = new FsCommandFactory();
}
return (FsCommandFactory)instance;
}
public CommandActionSupporter getSupporter() {
if (supporter == null) {
supporter = new JavaCvsActionSupporter();
}
return supporter;
}
protected String getHomeString() {
String toReturn;
JavaCvsSettings settings = (JavaCvsSettings)SharedClassObject.findObject(
JavaCvsSettings.class, true);
java.io.File home = settings.getHome();
if (home != null || !home.exists()) {
toReturn = home.getAbsolutePath();
} else {
// just to make sure.. should not happen... only when someone deletes the
// the home dir during work with NB.
toReturn = System.getProperty("user.home"); // NOI18N
}
return toReturn;
}
/** run when the JavaCvsSettings object fires propertyChange
*/
private void settingsChanged(String propName, Object oldVal, Object newVal) {
if (propName == null) return;
if (propName.equals(GeneralVcsSettings.PROP_HOME)) {
File newHome = new File(newVal.toString());
if (newHome != null) {
location = newHome.getAbsolutePath();
try {
readFromDisk();
} catch (FileNotFoundException exc) {
// ignore
} catch (IOException exc2) {
ErrorManager.getDefault().notify(exc2);
}
}
}
}
public void addToHistory(FileSystemCommand command) {
FileSystemCommand histCom = null;
try {
histCom = (FileSystemCommand)command.getClass().newInstance();
histCom.copySwitchesFrom(command);
FsGlobalOptionsImpl glImpl = (FsGlobalOptionsImpl)command.getImpl().getGlobalOptions();
GlobalOptions opts = glImpl.getLibraryGlobalOptions();
histCom.setGlobalOptions(opts);
} catch (InstantiationException ex) {
return;
} catch (IllegalAccessException exc) {
return;
}
LinkedList histList = (LinkedList)historyLists.get(histCom.getClass());
if (histList == null) {
histList = new LinkedList();
historyLists.put(histCom.getClass(), histList);
}
if (histList.size() >= HIST_LIST_MAX_COUNT) {
histList.remove(0);
}
try {
FileSystemCommand lastCom = (FileSystemCommand)histList.getLast();
// only if the switches are different, add to history list..
if (lastCom == null || (!lastCom.getCVSArguments().equals(histCom.getCVSArguments()))) {
histList.add(histCom);
}
} catch (NoSuchElementException exc) {
histList.add(histCom);
}
}
public int getHistoryCount(Class comm) {
LinkedList histList = (LinkedList)historyLists.get(comm);
if (histList == null) {
return 0;
}
return histList.size();
}
public FileSystemCommand getHistoryItem(Class comm, int index) {
LinkedList histList = (LinkedList)historyLists.get(comm);
if (histList == null) {
return null;
}
return (FileSystemCommand)histList.get(index);
}
public FileSystemCommand createCommand(Class classa,
boolean loadDefaults, File[] files, ClientProvider provider) {
FileSystemCommand comm = getCommand(classa, loadDefaults);
if (comm != null) {
comm.setClientProvider(provider);
comm.setFiles(files);
}
return comm;
}
public FileSystemCommand createCommand(Class classa,
boolean loadDefaults, FileObject[] files, ClientProvider provider) {
FileSystemCommand comm = getCommand(classa, loadDefaults);
if (comm != null) {
comm.setClientProvider(provider);
comm.setFileObjects(files);
}
return comm;
}
private static Customizer findCustomizer(Object command) {
if (command == null) {
return null;
}
BeanInfo info;
try {
info = Introspector.getBeanInfo(command.getClass());
} catch (IntrospectionException exc) {
return null;
}
Class clazz = info.getBeanDescriptor().getCustomizerClass();
if (clazz == null) {
return null;
}
Object o;
try {
o = clazz.newInstance();
} catch (InstantiationException e) {
return null;
} catch (IllegalAccessException e) {
return null;
}
if (! (o instanceof Customizer) ) {
return null;
}
Customizer cust = ((java.beans.Customizer)o);
return cust;
}
public void showCustomizerAndRun(FileSystemCommand command, boolean skipParams, boolean skipDisplayers) {
Customizer cust = null;
if (!skipParams) {
cust = findCustomizer(command.getImpl());
}
showCustomizerAndRun(command, cust, skipDisplayers);
}
/**
* runs commands in the list.. Expects instances of FileSystemCommand..
* skipDisplayer.. list of Boolean values of
*/
public void showCustomizerAndRun(java.util.List commandList, java.util.List skipDisplayers, boolean skipParams) {
FileSystemCommand comm = (FileSystemCommand)commandList.get(0);
Customizer cust = null;
if (!skipParams && comm != null) {
cust = findCustomizer(comm.getImpl());
}
doShowCustomizerAndRun(commandList, cust, skipDisplayers);
}
public void showCustomizerAndRun(final FileSystemCommand command, Customizer cust, boolean skipDisplayers) {
java.util.List list = new LinkedList();
java.util.List skipList = new LinkedList();
list.add(command);
skipList.add(skipDisplayers ? Boolean.TRUE : Boolean.FALSE);
// FsGlobalOptions globalCom = new FsGlobalOptionsImpl(command.getGlobalOptions());
doShowCustomizerAndRun(list, cust, skipList);
}
public void doShowCustomizerAndRun(final java.util.List commandList, Customizer cust, final java.util.List skipDisplayers) {
final FileSystemCommand command = (FileSystemCommand)commandList.get(0);
final java.util.List implList = new LinkedList();
Iterator it = commandList.iterator();
while (it.hasNext()) {
FileSystemCommand fsCom = (FileSystemCommand)it.next();
implList.add(fsCom.getImpl());
}
Customizer glComp = findCustomizer(command.getImpl().getGlobalOptions());
GlobalOptionsCustomizer glOptCustom = null;
if (glComp instanceof GlobalOptionsCustomizer) {
glOptCustom = (GlobalOptionsCustomizer)glComp;
}
final GlobalOptionsCustomizer finGlOptCustom = glOptCustom;
if (glComp != null) {
glComp.setObject(implList);
}
if (cust != null && cust instanceof JComponent) {
// now create option buttons
final Object[] paramOptions = new Object[2];
String btnRunText = NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.RunCommandButton"); // NOI18N
javax.swing.JButton btnRun = new javax.swing.JButton(btnRunText);
javax.swing.JButton btnCancel = new javax.swing.JButton(NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.CancelButton")); // NOI18N
AccessibleContext context = btnCancel.getAccessibleContext();
context.setAccessibleDescription(NbBundle.getBundle(FsCommandFactory.class).getString("ACSD_CancelButton"));
context = btnRun.getAccessibleContext();
context.setAccessibleDescription(NbBundle.getBundle(FsCommandFactory.class).getString("ACSD_RunButton"));
btnRun.setDefaultCapable(true);
paramOptions[0] = btnRun;
paramOptions[1] = btnCancel;
String commandName = ""; // NOI18N
try {
BeanInfo beaninfo;
beaninfo = Introspector.getBeanInfo(command.getImpl().getClass());
if (beaninfo != null) {
commandName = beaninfo.getBeanDescriptor().getDisplayName();
}
} catch (IntrospectionException exc) {
commandName = ""; // NOI18N
}
String title = NbBundle.getMessage(FsCommandFactory.class, "FsCommandFactory.CommandCustomizerTitle", commandName); // NOI18N
final JComponent componenta = (JComponent)cust;
DialogDescriptor dd = new DialogDescriptor(mainParamInput(componenta, commandList, glOptCustom), title);
cust.setObject(implList);
dd.setValue(btnRun);
dd.setClosingOptions(paramOptions);
dd.setOptions(paramOptions);
dd.setModal(true);
dd.setButtonListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (evt.getSource().equals(paramOptions[1])) {
return;
}
if (evt.getSource().equals(paramOptions[0])) {
Iterator it = commandList.iterator();
while (it.hasNext()) {
FileSystemCommand comm = (FileSystemCommand)it.next();
String rootString = comm.getGlobalOptions().getCVSRoot();
if (rootString != null && !rootString.equals("")) { // NOI18N
((StandardClientProvider)comm.getClientProvider()).setCvsRootString(rootString);
} else {
comm.getGlobalOptions().setCVSRoot(comm.getClientProvider().getCvsRootString());
}
/* FsGlobalOptionsImpl opts = new FsGlobalOptionsImpl();
opts.setCVSRoot(""); // NOI18N
finGlOptCustom.setGlobalData(opts);
GlobalOptions libopts = opts.getLibraryGlobalOptions();
if (!opts.getCVSRoot().equals("")) { // NOI18N
((StandardClientProvider)comm.getClientProvider()).setCvsRootString(opts.getCVSRoot());
} else {
libopts.setCVSRoot(comm.getClientProvider().getCvsRootString());
}
*/
// comm.setGlobalOptions(libopts);
}
runCommands(commandList, skipDisplayers);
return;
}
}
});
final java.awt.Dialog dial = DialogDisplayer.getDefault().createDialog(dd);
// dial.setModal(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
componenta.requestFocus();
dial.show();
}
});
} else {
if (cust != null) {
cust.setObject(commandList);
}
it = commandList.iterator();
while (it.hasNext()) {
FileSystemCommand comm = (FileSystemCommand)it.next();
// comm.copySwitchesFrom(command);
String rootString = comm.getGlobalOptions().getCVSRoot();
if (rootString != null && !rootString.equals("")) { // NOI18N
((StandardClientProvider)comm.getClientProvider()).setCvsRootString(rootString);
} else {
comm.getGlobalOptions().setCVSRoot(comm.getClientProvider().getCvsRootString());
}
}
runCommands(commandList, skipDisplayers);
}
}
private void runCommands(java.util.List commandList, java.util.List skipDisplayersList) {
Iterator it = commandList.iterator();
Iterator it2 = skipDisplayersList.iterator();
boolean skipDisplayers = false;
boolean isFirstInRow = true;
while (it.hasNext()) {
FileSystemCommand command = (FileSystemCommand)it.next();
Boolean skip = (Boolean)it2.next();
skipDisplayers = skip.booleanValue();
CommandDisplayerListener dis = null;
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (!skipDisplayers) {
if (provider.getDisplayType() == NbJavaCvsFileSystem.DISP_TYPE_SIMPLE) {
dis = new CommandLineInfoPanel(command);
} else {
String methodName = command.getClass().getName();
int ind = methodName.lastIndexOf('.');
methodName = "add" + methodName.substring(ind + 1) + "Displayer"; // NOI18N
try {
Method metoda = FsCommandFactory.class.getDeclaredMethod(methodName, new Class[] {command.getClass()});
dis = (CommandDisplayerListener)metoda.invoke(FsCommandFactory.class, new Object[] {command});
} catch (Exception exc) {
//DEBUG only. Thread.dumpStack();
// the exception is ok, IF the displayer is not defined...
}
}
if (dis != null) {
command.addDisplayerListener(dis);
}
}
// error handling listener added
dis = new ErrorLogPanel(command);
command.addDisplayerListener(dis);
if (isFirstInRow) {
addToHistory(command);
isFirstInRow = false;
}
command.startCommand();
}
}
public static CommandDisplayerListener addCvsAnnotateDisplayer(CvsAnnotate command) {
CommandDisplayerListener dis = null;
dis = new AnnotateDisplayer(command);
return dis;
}
public static CommandDisplayerListener addCvsStatusDisplayer(CvsStatus command) {
CommandDisplayerListener dis = null;
dis = new StatusDisplayer(command);
return dis;
}
public static CommandDisplayerListener addCvsDiffDisplayer(CvsDiff command) {
CommandDisplayerListener dis = null;
if (command.isContextDiff() || command.isUnifiedDiff()) {
command.setIncludeStatusAndCheckout(false);
dis = new CommandLineInfoPanel(command);
return dis;
}
dis = new DiffCommandDisplayer(command);
command.setIncludeStatusAndCheckout(true);
return dis;
}
public static CommandDisplayerListener addCvsLogDisplayer(CvsLog command) {
CommandDisplayerListener dis = null;
dis = new LogDisplayer(command);
return dis;
}
public static CommandDisplayerListener addCvsRemoveDisplayer(CvsRemove command) {
CommandDisplayerListener dis = null;
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new RemoveInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsUpdateDisplayer(CvsUpdate command) {
CommandDisplayerListener dis = null;
if (command.isPipeToOutput()) {
dis = new PipeToOutputDisplayer(command);
} else {
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new UpdateInfoPanel(command);
}
}
return dis;
}
public static CommandDisplayerListener addCvsImportDisplayer(CvsImport command) {
CommandDisplayerListener dis = null;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new CommandLineInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsExportDisplayer(CvsExport command) {
CommandDisplayerListener dis = null;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new CommandLineInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsCheckoutDisplayer(CvsCheckout command) {
CommandDisplayerListener dis = null;
if (command.isShowModules() || command.isShowModulesWithStatus()) {
dis = new ModulesListPanel();
}
else if (command.isPipeToOutput()) {
dis = new PipeToOutputDisplayer(command);
} else {
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new CommandLineInfoPanel(command);
}
}
return dis;
}
public static CommandDisplayerListener addCvsTagDisplayer(CvsTag command) {
CommandDisplayerListener dis = null;
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new CommandLineInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsCommitDisplayer(CvsCommit command) {
CommandDisplayerListener dis = null;
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new CommitInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsAddDisplayer(CvsAdd command) {
CommandDisplayerListener dis = null;
// if (!command.getClientProvider() instanceof IndependantClient) return;
IndependantClient provider = (IndependantClient)command.getClientProvider();
if (provider.getDisplayType() != NbJavaCvsFileSystem.DISP_TYPE_LIMITED) {
dis = new AddInfoPanel(command);
}
return dis;
}
public static CommandDisplayerListener addCvsHistoryDisplayer(CvsHistory command) {
CommandDisplayerListener dis = new CommandLineInfoPanel(command);
return dis;
}
public static CommandDisplayerListener addCvsWatchersDisplayer(CvsWatchers command) {
// temporary command-line display..
CommandDisplayerListener dis = new CommandLineInfoPanel(command);
return dis;
}
private JPanel mainParamInput(JComponent concrete, final java.util.List commandList, GlobalOptionsCustomizer globalCust) {
final FileSystemCommand fCommand = (FileSystemCommand)commandList.get(0);
final GlobalOptionsCustomizer globalCustom = globalCust;
JPanel main = new JPanel();
JPanel pnlButtons = new javax.swing.JPanel();
final JTabbedPane tbTabs = new JTabbedPane();
java.util.ResourceBundle bundle = NbBundle.getBundle(FsCommandFactory.class);
tbTabs.addTab(fCommand.getName(), concrete);
tbTabs.setTabPlacement(SwingConstants.BOTTOM);
if (globalCustom == null) {
ErrorManager.getDefault().log(ErrorManager.WARNING, "error while getting customizer for global options.."); //NOI18N
} else {
tbTabs.addTab(bundle.getString("FsCommandFactory.globalLabel"), (Component)globalCustom); // NOI18N
}
final Customizer custom = (Customizer)concrete;
final JTextField txCommLineEq = new JTextField();
JLabel lblCommLineEq = new JLabel();
JButton btnDefaultSwitches = new javax.swing.JButton();
javax.swing.JSeparator jSeparator1 = new javax.swing.JSeparator();
javax.swing.JSeparator jSeparator2 = new javax.swing.JSeparator();
final JButton btnPrev = new JButton();
final JButton btnNext = new JButton();
// ---------------- generated stuff
btnPrev.setText(bundle.getString("FsCommandFactory.btnPrev")); // NOI18N
// btnPrev.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/netbeans/modules/cvsclient/.gif")));
btnPrev.setToolTipText(bundle.getString("FsCommandFactory.btnPrev.tooltip")); // NOI18N
btnPrev.setMnemonic(bundle.getString("FsCommandFactory.btnPrev.mnemonic").charAt (0)); // NOI18N
btnNext.setText(bundle.getString("FsCommandFactory.btnNext")); // NOI18N
// btnNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/netbeans/modules/cvsclient/.gif")));
btnNext.setToolTipText(bundle.getString("FsCommandFactory.btnNext.tooltip")); // NOI18N
btnNext.setMnemonic(bundle.getString("FsCommandFactory.btnNext.mnemonic").charAt (0)); // NOI18N
main.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gbc;
gbc = new java.awt.GridBagConstraints();
pnlButtons.setLayout(new java.awt.GridBagLayout());
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = gbc.WEST;
gbc.insets = new java.awt.Insets(12, 12, 0, 0);
pnlButtons.add(btnPrev, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.insets = new java.awt.Insets(12, 2, 0, 0);
pnlButtons.add(btnNext, gbc);
btnDefaultSwitches.setText(bundle.getString("FsCommandFactory.cbDefaultSwitches.text")); // NOI18N
btnDefaultSwitches.setToolTipText(bundle.getString("FsCommandFactory.cbDefaultSwitches.tooltip")); // NOI18N
btnDefaultSwitches.setMnemonic(bundle.getString("FsCommandFactory.cbDefaultSwitches.mnemonic").charAt (0)); // NOI18N
gbc.gridx = 2;
gbc.gridy = 0;
gbc.insets = new java.awt.Insets(12, 5, 0, 11);
pnlButtons.add(btnDefaultSwitches, gbc);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.insets = new java.awt.Insets(0, 0, 0, 0);
main.add(pnlButtons, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = gbc.REMAINDER;
gbc.fill = gbc.BOTH;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.insets = new java.awt.Insets(12, 12, 0, 11);
main.add(tbTabs, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.gridwidth = 1;
gbc.weightx = 0;
gbc.weighty = 0;
gbc.insets = new java.awt.Insets(12, 12, 0, 0);
lblCommLineEq.setText(bundle.getString("FsCommandFactory.btnCommandLine.text")); // NOI18N
lblCommLineEq.setDisplayedMnemonic(bundle.getString("FsCommandFactory.btnCommandLine.mnemonic").charAt(0)); // NOI18N
lblCommLineEq.setLabelFor(txCommLineEq);
main.add(lblCommLineEq, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridwidth = gbc.REMAINDER;
gbc.fill = gbc.HORIZONTAL;
gbc.insets = new java.awt.Insets(12, 12, 0, 11);
txCommLineEq.setEditable(false);
main.add(txCommLineEq, gbc);
//--------------- generated stuff
custom.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent event) {
doShowCommandLine(event, txCommLineEq);
}
});
globalCustom.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent event) {
doShowCommandLine(event, txCommLineEq);
}
});
btnDefaultSwitches.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (tbTabs.getSelectedIndex() == 0) {
doSaveAsDefault(fCommand);
} else {
FsGlobalOptionsImpl opts = new FsGlobalOptionsImpl();
opts.setCVSRoot(""); // NOI18N
globalCustom.setGlobalData(opts);
doSaveAsDefault(opts);
}
}
});
btnNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
doNextCommand(commandList, btnPrev, btnNext, custom, globalCustom);
}
});
btnPrev.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
doPrevCommand(commandList, btnPrev, btnNext, custom, globalCustom);
}
});
btnNext.setEnabled(false);
int histCount = getHistoryCount(fCommand.getClass());
if (histCount == 0) {
btnPrev.setEnabled(false);
}
btnNext.putClientProperty("HistIndex", new Integer(histCount)); // NOI18N
btnNext.putClientProperty("HistCount", new Integer(histCount)); // NOI18N
FileSystemCommand histCom = null;
try {
histCom = (FileSystemCommand)fCommand.getClass().newInstance();
histCom.copySwitchesFrom(fCommand);
// copy the global options.. we need 2 different instances..
FsGlobalOptionsImpl glImpl = (FsGlobalOptionsImpl)fCommand.getImpl().getGlobalOptions();
histCom.setGlobalOptions(glImpl.getLibraryGlobalOptions());
btnNext.putClientProperty("HistLastCommand", histCom); // NOI18N
} catch (InstantiationException ex) {
} catch (IllegalAccessException exc) {
}
//a11y description
AccessibleContext context = main.getAccessibleContext();
context.setAccessibleDescription(concrete.getAccessibleContext().getAccessibleDescription());
context = btnPrev.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("FsCommandFactory.btnPrev.tooltip"));
context = btnNext.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("FsCommandFactory.btnNext.tooltip"));
context = btnDefaultSwitches.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("FsCommandFactory.cbDefaultSwitches.tooltip"));
context = txCommLineEq.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ACSD_FsCommandFactory.txCommLineEq"));
context = tbTabs.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ACSD_FsCommandFactory.tbTabs"));
context.setAccessibleName(bundle.getString("ACSN_FsCommandFactory.tbTabs"));
return main;
}
private void doPrevCommand(java.util.List commList, JButton btnPrev, JButton btnNext, Customizer cust, Customizer glCust) {
Integer itemId = (Integer)btnNext.getClientProperty("HistIndex"); // NOI18N
int index = itemId.intValue();
btnNext.setEnabled(true);
index = index - 1;
if (index == 0) {
btnPrev.setEnabled(false);
}
FileSystemCommand prev = getHistoryItem(commList.get(0).getClass(), index);
LinkedList implList = new LinkedList();
Iterator it = commList.iterator();
while (it.hasNext()) {
FileSystemCommand comm = (FileSystemCommand)it.next();
comm.copySwitchesFrom(prev);
implList.add(comm.getImpl());
FsGlobalOptionsImpl globalCom = (FsGlobalOptionsImpl)prev.getImpl().getGlobalOptions();
GlobalOptions opts = globalCom.getLibraryGlobalOptions();
comm.setGlobalOptions(opts);
}
cust.setObject(implList);
glCust.setObject(implList);
btnNext.putClientProperty("HistIndex", new Integer(index)); // NOI18N
}
private void doNextCommand(java.util.List commList, JButton btnPrev, JButton btnNext, Customizer cust, Customizer glCust) {
Integer itemId = (Integer)btnNext.getClientProperty("HistIndex"); // NOI18N
Integer itemCount = (Integer)btnNext.getClientProperty("HistCount"); // NOI18N
int index = itemId.intValue();
btnPrev.setEnabled(true);
index = index + 1;
FileSystemCommand next = null;
if (index == itemCount.intValue()) {
btnNext.setEnabled(false);
FileSystemCommand last = (FileSystemCommand)btnNext.getClientProperty("HistLastCommand"); // NOI18N
next = last;
} else {
next = getHistoryItem(commList.get(0).getClass(), index);
}
Iterator it = commList.iterator();
LinkedList implList = new LinkedList();
while (it.hasNext()) {
FileSystemCommand comm = (FileSystemCommand)it.next();
comm.copySwitchesFrom(next);
implList.add(comm.getImpl());
FsGlobalOptionsImpl globalCom = (FsGlobalOptionsImpl)next.getImpl().getGlobalOptions();
comm.setGlobalOptions(globalCom.getLibraryGlobalOptions());
}
cust.setObject(implList);
glCust.setObject(implList);
btnNext.putClientProperty("HistIndex", new Integer(index)); // NOI18N
}
private void doShowCommandLine(java.beans.PropertyChangeEvent event, JTextField field) {
if (CustomizerPropChangeSupport.PROPERTY_CVS_COMMAND_LINE.equals(event.getPropertyName())) {
String oldVal = event.getOldValue().toString();
String newVal = event.getNewValue().toString();
if (!oldVal.equals(newVal)) {
newVal = newVal.replace('\n', ' ');
int firstOcc = newVal.indexOf('"'); // NOI18N
int lastOcc = newVal.lastIndexOf('"'); // NOI18N
if (lastOcc > firstOcc) {
if ((lastOcc - firstOcc) > 10) {
String fin = newVal.substring(0,firstOcc + 6);
String fin2 = newVal.substring(lastOcc, newVal.length());
newVal = fin + "..." + fin2; //NOI18N
}
}
field.putClientProperty(CustomizerPropChangeSupport.PROPERTY_CVS_COMMAND_LINE, newVal);
Object glSwitches = field.getClientProperty(CustomizerPropChangeSupport.PROPERTY_GLOBAL_COMMAND_LINE);
if (glSwitches != null) {
newVal = glSwitches.toString() + " " + newVal; // NOI18N
}
field.setText(newVal);
}
}
if (CustomizerPropChangeSupport.PROPERTY_GLOBAL_COMMAND_LINE.equals(event.getPropertyName())) {
String oldVal = event.getOldValue().toString();
String newVal = event.getNewValue().toString();
if (!oldVal.equals(newVal)) {
field.putClientProperty(CustomizerPropChangeSupport.PROPERTY_GLOBAL_COMMAND_LINE, newVal);
Object commSwitches = field.getClientProperty(CustomizerPropChangeSupport.PROPERTY_CVS_COMMAND_LINE);
if (commSwitches != null) {
newVal = newVal + " " + commSwitches.toString(); // NOI18N
}
field.setText(newVal);
}
}
}
private static void doSaveAsDefault(FileSystemCommand command) {
boolean globalDefault = false;
String message = NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.globalDefaultQuestion"); // NOI18N
NotifyDescriptor nd = new NotifyDescriptor.Confirmation(message, org.openide.NotifyDescriptor.OK_CANCEL_OPTION);
Object returnValue = DialogDisplayer.getDefault().notify(nd);
// System.out.println("return value=" + returnValue.getClass().getName() + " " + returnValue.toString());
JavaCvsCommandFactory fact = command.getClientProvider().getCommandFactory();
if (NotifyDescriptor.Confirmation.CANCEL_OPTION.equals(returnValue)) {
return;
}
if (NotifyDescriptor.Confirmation.OK_OPTION.equals(returnValue)) {
try {
// String arguments = command.getCVSArguments();
// System.out.println("arguments=" + arguments);
FileSystemCommand newComm = fact.getCommand(command.getClass(), false);
newComm.copySwitchesFrom(command);
// System.out.println("def. object=" + newComm.getCvsrcEntry());
fact.putCommand(command.getClass(), newComm);
fact.writeToDisk(false);
} catch (java.io.IOException ioExc) {
ErrorManager.getDefault().annotate(ioExc, NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.cannotWriteDefaultSwitches"));
}
}
}
private static void doSaveAsDefault(FsGlobalOptionsImpl globs) {
boolean globalDefault = false;
String message = NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.globalDefaultQuestionForGlOptions"); // NOI18N
NotifyDescriptor nd = new NotifyDescriptor.Confirmation(message, org.openide.NotifyDescriptor.OK_CANCEL_OPTION);
Object returnValue = DialogDisplayer.getDefault().notify(nd);
if (NotifyDescriptor.Confirmation.CANCEL_OPTION.equals(returnValue)) {
return;
}
if (NotifyDescriptor.Confirmation.OK_OPTION.equals(returnValue)) {
try {
FsCommandFactory.getFsInstance().setGlobalOptions(globs);
FsCommandFactory.getFsInstance().writeToDisk(false);
} catch (java.io.IOException ioExc) {
ErrorManager.getDefault().annotate(ioExc, NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.cannotWriteDefaultSwitches"));
}
}
}
/** a generic procedure of displaying results in the javacvs Mode.
* If the subclass wants to change that behaviour for whatever reason, it can change it.
* Recommended to keep it this way for UI reasons.
*/
public static void displayOutputPanel(final String title, final PersistentCommandDisplayer component) {
JavaCvsTopComponent comp = findJavaCvsTopComponent(component);
if (comp == null) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
org.openide.windows.Workspace workspace = WindowManager.getDefault().getCurrentWorkspace();
org.openide.windows.Mode javaMode = NbJavaCvsFileSystem.getDockingMode(workspace);
JavaCvsTopComponent comp = new JavaCvsTopComponent();
javax.accessibility.AccessibleContext context = comp.getAccessibleContext();
javax.accessibility.AccessibleContext compContext = component.getComponent().getAccessibleContext();
context.setAccessibleDescription(compContext.getAccessibleDescription());
comp.setName(title);
comp.setLayout(new BorderLayout());
comp.addDisplayer(component);
javaMode.dockInto(comp);
comp.open();
}
});
}
else {
comp.requestFocus();
}
}
public static JavaCvsTopComponent findJavaCvsTopComponent(PersistentCommandDisplayer displayer) {
java.util.Set components = org.openide.windows.TopComponent.getRegistry().getOpened();
if (components == null || components.size() == 0) return null;
Iterator it = components.iterator();
while (it.hasNext()) {
Object next = it.next();
if (next instanceof JavaCvsTopComponent) {
JavaCvsTopComponent jcTop = (JavaCvsTopComponent)next;
if (jcTop.getDisplayer().equals(displayer)) {
return jcTop;
}
}
}
return null;
}
public static PersistentCommandDisplayer findOpenDisplayer(File file, Class type, Object additionalInfo) {
java.util.Set components = TopComponent.getRegistry().getOpened();
if (components == null || components.size() == 0) return null;
PersistentCommandDisplayer toReturn = null;
Iterator it = components.iterator();
while (it.hasNext()) {
Object next = it.next();
if (next instanceof JavaCvsTopComponent) {
JavaCvsTopComponent jcTop = (JavaCvsTopComponent)next;
toReturn = jcTop.getEqualDisplayer(file, type, additionalInfo);
if (toReturn != null) {
return toReturn;
}
}
}
return toReturn;
}
/** a generic procedure for displaying short-term results like the Update command output
*
*/
public static Dialog createDialog(JPanel panel, String title) {
DialogDescriptor dd = new DialogDescriptor(panel, title);
Object[] options = new Object[1];
JButton btnClose = new JButton(NbBundle.getBundle(FsCommandFactory.class)
.getString("FsCommandFactory.closeButton")); // NOI18N
AccessibleContext context = btnClose.getAccessibleContext();
context.setAccessibleDescription(NbBundle.getBundle(FsCommandFactory.class).getString("ACSD_CloseButton"));
btnClose.setDefaultCapable(true);
options[0] = btnClose;
dd.setValue(btnClose);
dd.setOptions(options);
dd.setClosingOptions(null); // all are closing
Dialog dial = DialogDisplayer.getDefault().createDialog(dd);
dial.setModal(false);
return dial;
}
/*******************************************************************
* runtime related stuff..
*******************************************************************/
public void addIndependantRuntime(FileSystemCommand comm) {
//String indName = NbBundle.getBundle(FsCommandFactory.class).getString("FsCommandFactory.IndependantRuntimeFolder");
//RuntimeSupport.getInstance().initRuntime(indName);
synchronized (this) {
if (independentRuntimeProvider == null) {
independentRuntimeProvider = new JavaCvsRuntimeCommandsProvider(null);
}
}
JavaCvsRuntimeCommand rCom = new JavaCvsRuntimeCommand(comm, independentRuntimeProvider);
independentRuntimeProvider.updateCommand(rCom);
comm.addDisplayerListener(rCom);
comm.addCommandErrorListener(rCom);
}
}
|
| ... 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.