|
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 org.openide.util.NbBundle;
import javax.swing.DefaultComboBoxModel;
import org.netbeans.modules.vcscore.util.*;
import org.netbeans.modules.javacvs.*;
import org.netbeans.modules.javacvs.commands.*;
import org.netbeans.modules.cvsclient.commands.checkout.ModulesListPanel;
import org.netbeans.lib.cvsclient.command.GlobalOptions;
import org.netbeans.lib.cvsclient.util.DefaultIgnoreFileFilter;
import org.netbeans.lib.cvsclient.util.IgnoreFileFilter;
import org.openide.filesystems.FileObject;
import javax.swing.*;
import javax.accessibility.*;
import javax.swing.tree.*;
import java.awt.Component;
import javax.swing.event.*;
import java.io.File;
import java.io.*;
import java.util.Comparator;
import java.util.Arrays;
import java.util.LinkedList;
import org.netbeans.modules.cvsclient.customizer.NbJavaCvsCustomizer;
import org.netbeans.modules.cvsclient.commands.checkout.NbCheckoutParamInput;
import org.netbeans.modules.vcscore.cache.CacheHandler;
import org.netbeans.modules.javacvs.caching.JavaCvsCache;
import org.netbeans.modules.javacvs.caching.CvsFsCache;
import org.netbeans.modules.cvsclient.caching.NbCvsFsCache;
import org.openide.util.*;
import org.openide.*;
/**
* Starting panel for execution of filesystem independant cvs commands.
* @author mkleint
*/
public class ToolsCvsExecutionPanel extends javax.swing.JPanel implements TreeSelectionListener {
private Object[] commandValues;
/*validate values if they are accpetable
*/
private final int VALID_WRK = 1;
private final int VALID_CVSROOT = 2;
private int validateValue = 0;
private FsCommandFactory commandFactory;
/** Creates new form ToolsCvsExecutionPanel */
public ToolsCvsExecutionPanel() {
initComponents();
initAccessibility();
commandFactory = (FsCommandFactory)FsCommandFactory.getInstance();
helpTextArea.setFont(javax.swing.UIManager.getFont("Label.font")); // NOI18N
helpTextArea.setDisabledTextColor(javax.swing.UIManager.getColor("Label.foreground")); // NOI18N
helpTextArea.setText(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.helpTextArea.text")); // NOI18N
lblCurrentDir.setDisplayedMnemonic(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.lblCurrentDir.mnemonic").charAt(0)); // NOI18N
lblCurrentDir.setLabelFor(cbCurrentDir);
lblFiles.setDisplayedMnemonic(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.lblFiles.mnemonic").charAt(0)); // NOI18N
lblFiles.setLabelFor(trFiles);
lblCommand.setDisplayedMnemonic(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.lblCommand.mnemonic").charAt(0)); // NOI18N
lblCommand.setLabelFor(cbCommand);
lblCvsRoot.setDisplayedMnemonic(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.lblCvsRoot.mnemonic").charAt(0)); // NOI18N
lblCvsRoot.setLabelFor(txCvsRoot);
btnCurrentDir.setMnemonic(NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.btnCurrentDir.mnemonic").charAt(0)); // NOI18N
final String UPDATE = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Update"); // NOI18N
final String COMMIT = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Commit"); // NOI18N
final String DIFF = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Diff"); // NOI18N
final String STATUS = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Status"); // NOI18N
final String LOG = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Log"); // NOI18N
final String CHECKOUT = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Checkout"); // NOI18N
final String ADD = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Add"); // NOI18N
final String REMOVE = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Remove"); // NOI18N
final String IMPORT = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Import"); // NOI18N
final String EXPORT = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Export"); // NOI18N
final String ANNOTATE = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.Annotate"); // NOI18N
final String LISTMODULES = NbBundle.getBundle(ToolsCvsExecutionPanel.class).getString("ToolsCvsExecutionPanel.ListModules"); // NOI18N
commandValues = new Object[] {
UPDATE, COMMIT, DIFF, STATUS, LOG, ANNOTATE, CHECKOUT, IMPORT, EXPORT, ADD, REMOVE, LISTMODULES};
cbCommand.setModel(new DefaultComboBoxModel(commandValues));
cbCurrentDir.setModel(new DefaultComboBoxModel());
addTreeListeners();
createTree(""); // NOI18N
DefaultTreeCellRenderer def = new MyTreeCellRenderer();
trFiles.setCellRenderer(def);
trFiles.putClientProperty("JTree.lineStyle", "Angled"); // NOI18N
// init cache..
// do this, just for the case the cache wasn't init'ed by some of the filesystems..
CacheHandler handler = CacheHandler.getInstance();
JavaCvsCache cache = (JavaCvsCache)handler.getCache(JavaCvsCache.JAVA_CACHE_NAME);
if (cache == null) {
cache = NbCvsFsCache.getCacheObject();
handler.registerCacheType(JavaCvsCache.JAVA_CACHE_NAME, cache);
}
// spFiles.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
helpTextArea = new javax.swing.JTextArea();
lblCurrentDir = new javax.swing.JLabel();
cbCurrentDir = new javax.swing.JComboBox();
btnCurrentDir = new javax.swing.JButton();
lblCvsRoot = new javax.swing.JLabel();
txCvsRoot = new javax.swing.JTextField();
lblFiles = new javax.swing.JLabel();
spFiles = new javax.swing.JScrollPane();
trFiles = new javax.swing.JTree();
commandPanel = new javax.swing.JPanel();
lblCommand = new javax.swing.JLabel();
cbCommand = new javax.swing.JComboBox();
setLayout(new java.awt.GridBagLayout());
helpTextArea.setEditable(false);
helpTextArea.setLineWrap(true);
helpTextArea.setWrapStyleWord(true);
helpTextArea.setEnabled(false);
helpTextArea.setOpaque(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 5, 11);
add(helpTextArea, gridBagConstraints);
lblCurrentDir.setLabelFor(cbCurrentDir);
lblCurrentDir.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ToolsCvsExecutionPanel.lblCurrentDir.label"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 0, 0);
add(lblCurrentDir, gridBagConstraints);
cbCurrentDir.setEditable(true);
cbCurrentDir.setMaximumRowCount(10);
cbCurrentDir.setPreferredSize(new java.awt.Dimension(300, 25));
cbCurrentDir.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
ToolsCvsExecutionPanel.this.cbCurrentDirFocusLost(evt);
}
});
cbCurrentDir.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
ToolsCvsExecutionPanel.this.cbCurrentDirItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 0, 0);
add(cbCurrentDir, gridBagConstraints);
btnCurrentDir.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ToolsCvsExecutionPanel.btnCurrentDir.text"));
btnCurrentDir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ToolsCvsExecutionPanel.this.btnCurrentDirActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 5, 0, 11);
add(btnCurrentDir, gridBagConstraints);
lblCvsRoot.setLabelFor(txCvsRoot);
lblCvsRoot.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ToolsCvsExecutionPanel.lblCvsRoot.text"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 0);
add(lblCvsRoot, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 0);
add(txCvsRoot, gridBagConstraints);
lblFiles.setLabelFor(trFiles);
lblFiles.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ToolsCvsExecutionPanel.lblFiles.text"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 2, 11);
add(lblFiles, gridBagConstraints);
spFiles.setMinimumSize(new java.awt.Dimension(300, 150));
spFiles.setPreferredSize(new java.awt.Dimension(300, 150));
spFiles.setViewportView(trFiles);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 12, 0, 11);
add(spFiles, gridBagConstraints);
commandPanel.setLayout(new java.awt.GridBagLayout());
lblCommand.setLabelFor(cbCommand);
lblCommand.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ToolsCvsExecutionPanel.lblCommand.text"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
commandPanel.add(lblCommand, gridBagConstraints);
cbCommand.setMaximumRowCount(10);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 12, 0, 0);
commandPanel.add(cbCommand, gridBagConstraints);
cbCommand.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/Bundle").getString("ACSD_cbCommand"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 11);
add(commandPanel, gridBagConstraints);
}//GEN-END:initComponents
private void cbCurrentDirItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbCurrentDirItemStateChanged
// Add your handling code here:
String item = (String)cbCurrentDir.getSelectedItem();
createTree(item);
findCvsRoot(item);
}//GEN-LAST:event_cbCurrentDirItemStateChanged
private void cbCurrentDirFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_cbCurrentDirFocusLost
/* // Add your handling code here:
DefaultComboBoxModel model = (DefaultComboBoxModel)cbCurrentDir.getModel();
String item = (String)cbCurrentDir.getEditor().getItem();
System.out.println("FocusLost");
System.out.println("selItem=" + item);
model.insertElementAt(item, 0);
cbCurrentDir.setSelectedIndex(0);
*/
}//GEN-LAST:event_cbCurrentDirFocusLost
private void btnCurrentDirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCurrentDirActionPerformed
// Add your handling code here:
String selected = (String)cbCurrentDir.getSelectedItem();
File dir = null;
if (selected == null || selected.trim().equals(""))
{
try
{
File defDir = new File(System.getProperty("user.home")); // NOI18N
if (Utilities.isUnix())
dir = defDir;
else if (Utilities.isWindows())
{
do
{
defDir = defDir.getParentFile();
}
while (defDir != null && defDir.getParentFile() != null && defDir.getParentFile().getParentFile() != null);
if (defDir != null)
dir = defDir;
}
}
catch (Exception ex)
{
dir = null;
}
}
else
dir = new File(selected);
if (dir == null) {
dir = new File(""); // NOI18N
}
ChooseDirDialog chooseDir=new ChooseDirDialog(new JFrame(), dir);
NbJavaCvsCustomizer.centerWindow(chooseDir);
HelpCtx.setHelpIDString(chooseDir.getRootPane(), ToolsCvsExecutionPanel.class.getName());
chooseDir.show();
selected = chooseDir.getSelectedDir();
if( selected==null ){
//D.deb("no directory selected"); // NOI18N
return ;
}
addToCombo(selected);
createTree(selected);
findCvsRoot(selected);
}//GEN-LAST:event_btnCurrentDirActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCurrentDir;
private javax.swing.JTree trFiles;
private javax.swing.JComboBox cbCommand;
private javax.swing.JLabel lblFiles;
private javax.swing.JPanel commandPanel;
private javax.swing.JLabel lblCvsRoot;
private javax.swing.JTextArea helpTextArea;
private javax.swing.JLabel lblCommand;
private javax.swing.JTextField txCvsRoot;
private javax.swing.JComboBox cbCurrentDir;
private javax.swing.JScrollPane spFiles;
private javax.swing.JLabel lblCurrentDir;
// End of variables declaration//GEN-END:variables
private static final java.util.ResourceBundle bundle = NbBundle.getBundle(ToolsCvsExecutionPanel.class);
private void initAccessibility() {
AccessibleContext context = this.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ToolsCvsExecutionPanel.helpTextArea.text"));
context = btnCurrentDir.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ACSD_ToolsCvsExecutionPanel.btnCurrentDir"));
context = txCvsRoot.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ACSD_ToolsCvsExecutionPanel.txCvsRoot"));
context = trFiles.getAccessibleContext();
context.setAccessibleDescription(bundle.getString("ACSD_ToolsCvsExecutionPanel.trFiles"));
}
private void addToCombo(String fileString) {
DefaultComboBoxModel model = (DefaultComboBoxModel)cbCurrentDir.getModel();
int size = model.getSize();
for (int index = 0; index < size; index++) {
String one = (String)model.getElementAt(index);
if (fileString.equals(one)) {
return;
}
}
model.insertElementAt(fileString, 0);
cbCurrentDir.setSelectedIndex(0);
}
private void addTreeListeners() {
trFiles.addTreeSelectionListener(this);
trFiles.addTreeWillExpandListener(new TreeWillExpandListener() {
public void treeWillExpand(TreeExpansionEvent evt) {
TreePath path = evt.getPath();
final MyTreeNode node = (MyTreeNode) path.getLastPathComponent();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
folderTreeNodes(node);
}
});
}
public void treeWillCollapse(TreeExpansionEvent evt) {
TreePath path = evt.getPath();
final MyTreeNode node = (MyTreeNode) path.getLastPathComponent();
node.setWasRead(false);
}
});
}
private void createTree(String rootString) {
trFiles.setModel(new DefaultTreeModel(new MyTreeNode()));
File rootDir = new File(rootString);
if (rootDir.isDirectory()) {
final MyTreeNode root = new MyTreeNode(rootDir);
// Runnable treeBuild = new Runnable() {
// public void run() {
//recursiveTreeNodes(root);
folderTreeNodes(root);
// }
// };
// new Thread(treeBuild, "Mount Panel Tree Build").start();
trFiles.setModel(new DefaultTreeModel(root));
}
trFiles.setSelectionRow(0);
}
private void folderTreeNodes(final MyTreeNode parent) {
boolean hasChild = false;
if (parent.isWasRead()) return;
synchronized (trFiles) {
parent.removeAllChildren();
parent.setWasRead(true);
File parentFile = (File) parent.getUserObject();
if (parentFile == null) return;
MyTreeNode child;
File childFile;
File[] list = parentFile.listFiles();
Arrays.sort(list, new MyComparator());
for (int index = 0; index < list.length; index++) {
if (list[index].exists()) {
childFile = list[index];
if (!childFile.getName().equals("CVS")) { //CVS dirs go out.. // NOI18N
hasChild = true;
child = new MyTreeNode(new File(childFile.getAbsolutePath()));
child.setAllowsChildren(childFile.isDirectory());
parent.add(child);
}
}
}
if (!hasChild) {
parent.setAllowsChildren(false);
trFiles.collapsePath(new TreePath(parent.getPath()));
}
}
((DefaultTreeModel) trFiles.getModel()).nodeStructureChanged(parent);
if (hasChild) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
trFiles.scrollPathToVisible(new TreePath(((MyTreeNode) parent.getLastChild()).getPath()));
trFiles.scrollPathToVisible(new TreePath(((MyTreeNode) parent.getFirstChild()).getPath()));
}
});
}
}
public void valueChanged(javax.swing.event.TreeSelectionEvent p1) {
/* TreePath path = trFiles.getSelectionPath();
if (path != null) {
MyTreeNode node = (MyTreeNode) path.getLastPathComponent();
File selFile = (File) node.getUserObject();
MyTreeNode rootNode = (MyTreeNode) node.getRoot();
File rootFile = (File) rootNode.getUserObject();
if (rootFile.getAbsolutePath().equals(selFile.getAbsolutePath())) {
return;
}
String toWrite = selFile.getAbsolutePath().substring(rootFile.getAbsolutePath().length());
if (toWrite.startsWith(File.separator)) {
toWrite = toWrite.substring(File.separator.length());
}
} else {
}
*/
}
public void executeCommand() {
Object selected = cbCurrentDir.getEditor().getItem();
addToCombo((String)selected);
TreePath[] paths = trFiles.getSelectionPaths();
LinkedList list = new LinkedList();
if (paths != null) {
for (int i = 0; i < paths.length; i++) {
TreePath path = paths[i];
Object fobj = path.getLastPathComponent();
DefaultMutableTreeNode node = (DefaultMutableTreeNode)fobj;
fobj = node.getUserObject();
if (fobj instanceof File) {
list.add(fobj);
}
}
}
if (list.size() == 0) {
String item = (String)cbCurrentDir.getSelectedItem();
list.add(new File(item));
}
File[] files = new File[list.size()];
files = (File[])list.toArray(files);
JavaCvsSettings settings = (JavaCvsSettings)SharedClassObject.findObject(
JavaCvsSettings.class, true);
IndependantClient client = new IndependantClient(settings.getHome());
GlobalOptions opt = new GlobalOptions();
opt.setCVSRoot(txCvsRoot.getText());
client.setGlobalOptions(opt);
client.setCvsRootString(txCvsRoot.getText());
client.setUiMode(settings.getUiMode());
client.setDisplayType(settings.getDisplayType());
String localPath = (String)cbCurrentDir.getSelectedItem();
client.setLocalPath(localPath);
// load ignore list..
java.util.List ignoreList = NbJavaCvsFileSystem.constructIgnoreList(settings.getHome(),
new java.io.File(localPath, "CVSROOT")); // NOI18N
IgnoreFileFilter ignoreFilter = new DefaultIgnoreFileFilter(ignoreList);
client.setIgnoreFilter(ignoreFilter);
FileSystemCommand command = createCommand(client, files);
if (command != null) {
command.setFiles(files);
commandFactory.addIndependantRuntime(command);
if (command.getClass().equals(CvsCheckout.class)) {
commandFactory.showCustomizerAndRun(command, new NbCheckoutParamInput(), false);
return;
}
commandFactory.showCustomizerAndRun(command, false, false);
} else {
//TODO error.
}
}
private FileSystemCommand createCommand(IndependantClient client, File[] files) {
int index = cbCommand.getSelectedIndex();
FsCommandFactory fact = (FsCommandFactory)FsCommandFactory.getInstance();
switch (index) {
case 0 : {
CvsUpdate command = (CvsUpdate)fact.createCommand(CvsUpdate.class,
true, files, client);
return command;
}
case 1 : {
CvsCommit command = (CvsCommit)fact.createCommand(CvsCommit.class,
true, files, client);
return command;
}
case 2 : {
CvsDiff command = (CvsDiff)fact.createCommand(CvsDiff.class,
true, files, client);
return command;
}
case 3 : {
CvsStatus command = (CvsStatus)fact.createCommand(CvsStatus.class,
true, files, client);
return command;
}
case 4 : {
CvsLog command = (CvsLog)fact.createCommand(CvsLog.class,
true, files, client);
return command;
}
case 5 : {
CvsAnnotate annot = (CvsAnnotate)fact.createCommand(CvsAnnotate.class,
true, files, client);
return annot;
}
case 6 : {
String[] modules = new String[files.length];
String root = (String)cbCurrentDir.getSelectedItem();
for (int i = 0; i < files.length; i++) {
String module = files[i].getAbsolutePath().substring(root.length());
module = module.replace('\\','/');
if (module.length() == 0) {
module = "."; // NOI18N
} else if (module.charAt(0) == '/') {
module = module.substring(1);
}
modules[i] = module;
}
CvsCheckout command = (CvsCheckout)fact.createCommand(CvsCheckout.class,
true, new FileObject[] {}, client);
command.setModules(modules);
command.setLocalPath(root);
return command;
}
case 7 : {
// import
String root = (String)cbCurrentDir.getSelectedItem();
if (files == null || files.length == 0) return null;
String localPath = files[0].getAbsolutePath();
client.setLocalPath(localPath);
String start = localPath;
start = start.substring(root.length());
start = start.replace('\\', '/');
if (start.startsWith("/")) { // NOI18N
start = start.substring(1);
}
String module = start;
CvsImport myStat = (CvsImport)fact.createCommand(CvsImport.class,
true, new FileObject[] {}, client);
myStat.setModule(module);
return myStat;
}
case 8 : {
// export
String[] modules = new String[files.length];
String root = (String)cbCurrentDir.getSelectedItem();
for (int i = 0; i < files.length; i++) {
String module = files[i].getAbsolutePath().substring(root.length());
module = module.replace('\\','/');
if (module.length() == 0) {
module = "."; // NOI18N
} else if (module.charAt(0) == '/') {
module = module.substring(1);
}
modules[i] = module;
}
client.setLocalPath(root);
CvsExport myStat = (CvsExport)fact.createCommand(CvsExport.class,
true, new FileObject[] {}, client);
myStat.setModules(modules);
return myStat;
}
case 9 : {
CvsAdd command = (CvsAdd)fact.createCommand(CvsAdd.class,
true, files, client);
return command;
}
case 10 : {
CvsRemove command = (CvsRemove)fact.createCommand(CvsRemove.class,
true, files, client);
return command;
}
case 11 : {
CvsCompleteModList command = new CvsCompleteModList(client);
command.addDisplayerListener(new ModulesListPanel());
return command;
}
}
return null;
}
private void findCvsRoot(String dirName) {
File dir = new File(dirName);
if (dir.exists()) {
final String rootName = "CVS" + File.separator + "Root"; // NOI18N
File rootFile = new File(dirName, rootName);
if (rootFile.exists()) {
BufferedReader buff = null;
try {
buff = new BufferedReader(new InputStreamReader(new FileInputStream(rootFile)));
String line = buff.readLine();
txCvsRoot.setText(line);
} catch (IOException exc) { //doesn't matter - nothing will be filled in
txCvsRoot.setText(""); // NOI18N
}
finally {
if (buff != null) {
try {
buff.close();
} catch (IOException eIO) {}
}
}
return;
}
}
txCvsRoot.setText(""); // NOI18N
return;
}
/** Informs you about if all necceseary values needed for executing command is set
* @return true if user set CVS Working dir and CVSROOT variable
* otherwise false
*/
public boolean isValid() {
validateValue = 0;
if (txCvsRoot.getText().equals("") || txCvsRoot.getText().length() < 13 ) validateValue = validateValue | VALID_CVSROOT; //length 13 'cause it must contains :pserver:@:/
String localPath = (String)cbCurrentDir.getSelectedItem();
if (localPath == null ) {
validateValue = validateValue | VALID_WRK;
} else {
File wrkdir = new File(localPath);
if (!wrkdir.isDirectory() || !wrkdir.canWrite()) validateValue = validateValue | VALID_WRK;
}
return (validateValue == 0);
}
private class MyTreeNode extends DefaultMutableTreeNode {
static final long serialVersionUID = 2478352100056378993L;
private boolean wasRead = false;
public MyTreeNode() {
super();
}
public MyTreeNode(Object userObject) {
super(userObject);
}
public boolean isLeaf() {
return !getAllowsChildren();
}
public void setWasRead(boolean read) {
wasRead = read;
}
public boolean isWasRead() {
return wasRead;
}
}
private class MyComparator implements Comparator {
public MyComparator() {
}
public boolean equals(Object obj) {
if (obj instanceof MyComparator) {
MyComparator obj2 = (MyComparator)obj;
return true;
}
return false;
}
public int compare(java.lang.Object obj1,java.lang.Object obj2) {
if (!(obj1 instanceof File) ||
!(obj2 instanceof File)) return 0;
File rev1 = (File)obj1;
File rev2 = (File)obj2;
int result = 0;
if ((rev1.isDirectory() && !rev2.isDirectory())) {
return - 1;
}
if (!rev1.isDirectory() && rev2.isDirectory()) {
return 1;
}
result = rev1.getName().compareTo(rev2.getName());
return result;
}
}
private class MyTreeCellRenderer extends DefaultTreeCellRenderer {
String DEFAULT_FOLDER = "/org/openide/loaders/defaultFolder.gif"; // NOI18N
String DEFAULT_OPEN_FOLDER = "/org/openide/loaders/defaultFolderOpen.gif"; // NOI18N
String DEFAULT_FILE = "/org/openide/resources/defaultNode.gif"; // NOI18N
static final long serialVersionUID = -1075722862531035018L;
/** Finds the component that is capable of drawing the cell in a tree.
* @param value value can be either Node or a value produced by models (like
* NodeTreeModel, etc.)
* @return component to draw the value
*/
public Component getTreeCellRendererComponent(
JTree tree, Object value,
boolean sel, boolean expanded,
boolean leaf, int row, boolean hasFocus
) {
Component comp = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (comp instanceof JLabel) {
JLabel label = (JLabel) comp;
MyTreeNode node = (MyTreeNode)value;
if (node != null) {
Object userObj = node.getUserObject();
if (userObj != null) {
File file = (File) userObj;
label.setText(file.getName());
if (!file.isDirectory()) {
java.net.URL url1 = this.getClass().getResource(DEFAULT_FILE);
label.setIcon(new ImageIcon(url1));
} else {
File cvsSubDir = new File(file.getAbsolutePath(), "CVS"); // NOI18N
if (!cvsSubDir.exists()) {
label.setText(file.getName() + " [Local]"); // NOI18N
}
if (!expanded) {
java.net.URL url1 = this.getClass().getResource(DEFAULT_FOLDER);
label.setIcon(new ImageIcon(url1));
} else {
java.net.URL url2 = this.getClass().getResource(DEFAULT_OPEN_FOLDER);
label.setIcon(new ImageIcon(url2));
// label.setIcon(new ImageIcon(new java.net.URL("org.netbeans.openide.resources.defaultFolder.gif")));
}
}
}
}
}
return comp;
}
}
}
|
| ... 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.