|
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.commands.status;
import java.io.*;
import java.util.*;
import javax.swing.tree.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import org.openide.util.*;
import org.netbeans.lib.cvsclient.command.status.*;
import org.netbeans.lib.cvsclient.command.FileInfoContainer;
import org.netbeans.lib.cvsclient.file.FileStatus;
import org.netbeans.modules.cvsclient.NbJavaCvsStatusManager;
import org.netbeans.modules.javacvs.caching.CvsCacheFile;
import org.netbeans.modules.javacvs.commands.JavaCvsStatusManager;
import org.netbeans.modules.cvsclient.commands.*;
import org.netbeans.modules.vcscore.util.table.*;
import org.netbeans.modules.javacvs.commands.CvsStatus;
import org.netbeans.modules.javacvs.commands.FileSystemCommand;
import java.lang.reflect.Method;
import org.netbeans.modules.cvsclient.FsCommandFactory;
/**
*
* @author mkleint
* @version
*/
public class StatusTreeInfoPanel extends AbstractTreeInfoPanel
implements PersistentCommandDisplayer {
private StatusInfoPanel statPanel;
private StatusInformation clearStatusInfo;
private CvsStatus command;
private Class fsCommand;
private javax.swing.JCheckBox cbUptodate;
private javax.swing.JCheckBox cbModified;
private javax.swing.JCheckBox cbNeedsPatch;
private javax.swing.JCheckBox cbNeedsMerge;
private javax.swing.JCheckBox cbHasConflict;
private javax.swing.JCheckBox cbLocAdded;
private javax.swing.JCheckBox cbLocRemoved;
private javax.swing.JCheckBox cbNeedsCheckout;
private javax.swing.JCheckBox cbUnknown;
private javax.swing.JLabel lblCount;
private javax.swing.JLabel lblTitle;
private int totalCount;
private int selectedCount;
private JRadioButton btnAll;
private String btnAll_Title;
private String btnJustModified_Title;
private JRadioButton btnJustModified;
private int currentFilter = FILTER_ALL;
private static final int FILTER_ALL = 0;
private static final int FILTER_MODIFIED = 1;
private JavaCvsStatusManager statusManager;
/** Creates new form StatusTreeInfoPanel */
public StatusTreeInfoPanel(File topDir, CvsStatus statusComm) {
super(topDir);
// insideListRenderer.setDefaultTab(30);
command = statusComm;
// add buttons now
initButtons();
statusManager = NbJavaCvsStatusManager.getInstance();
postInit();
}
public void setCommand(CvsStatus comm) {
command = comm;
}
private void initPanelComponents() {
}
private void initClearInfo() {
clearStatusInfo = new StatusInformation();
clearStatusInfo.setFile(new File("")); // NOI18N
clearStatusInfo.setRepositoryFileName(""); // NOI18N
clearStatusInfo.setRepositoryRevision(""); // NOI18N
clearStatusInfo.setWorkingRevision(""); // NOI18N
clearStatusInfo.setStatus(FileStatus.UNKNOWN);
clearStatusInfo.setStickyDate(""); // NOI18N
clearStatusInfo.setStickyOptions(""); // NOI18N
clearStatusInfo.setStickyTag(""); // NOI18N
}
protected void setPanel(Object infoData) {
StatusInformation statData = (StatusInformation)infoData;
statPanel.setData(statData);
}
protected JComponent initPanel() {
initClearInfo();
statPanel = new StatusInfoPanel(command);
setClearPanel();
return statPanel;
}
protected void setClearPanel() {
statPanel.setData(clearStatusInfo);
}
protected boolean canBeAdded(StatusInformation sInfo) {
if (sInfo.getStatus() == FileStatus.UP_TO_DATE && cbUptodate.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.MODIFIED && cbModified.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.ADDED && cbLocAdded.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.REMOVED && cbLocRemoved.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.NEEDS_CHECKOUT && cbNeedsCheckout.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.NEEDS_MERGE && cbNeedsMerge.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.NEEDS_PATCH && cbNeedsPatch.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.HAS_CONFLICTS && cbHasConflict.isSelected()) return true;
if (sInfo.getStatus() == FileStatus.UNKNOWN && cbUnknown.isSelected()) return true;
return false;
}
protected boolean addToList(FileInfoContainer info) {
StatusInformation sInfo = (StatusInformation)info;
return canBeAdded(sInfo);
}
protected void addFileNode(FileInfoContainer info,DefaultMutableTreeNode parent) {
StatusInformation sInfo = (StatusInformation)info;
totalCount = totalCount + 1;
if (canBeAdded(sInfo)) {
DefaultMutableTreeNode child = new DefaultMutableTreeNode(info);
parent.add(child);
selectedCount = selectedCount + 1;
}
}
private void checkBoxChanged() {
totalCount = 0;
selectedCount = 0;
recreateModel();
Integer selCount = new Integer(selectedCount);
Integer totCount = new Integer(totalCount);
String txt = NbBundle.getMessage(StatusTreeInfoPanel.class, "StatusTreeInfoPanel.lblCount", // NOI18N
selCount.toString(), totCount.toString());
lblCount.setText(txt);
}
private void initButtons() {
JPanel panel = getButtonPanel();
cbUptodate = new javax.swing.JCheckBox();
cbModified = new javax.swing.JCheckBox();
cbLocAdded = new javax.swing.JCheckBox();
cbLocRemoved = new javax.swing.JCheckBox();
cbNeedsCheckout = new javax.swing.JCheckBox();
cbNeedsMerge = new javax.swing.JCheckBox();
lblTitle = new javax.swing.JLabel();
lblCount = new javax.swing.JLabel();
cbNeedsPatch = new javax.swing.JCheckBox();
cbHasConflict = new javax.swing.JCheckBox();
cbUnknown = new javax.swing.JCheckBox();
panel.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gridBagConstraints1;
lblTitle.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.lblTitle.text")); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 0;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets(12, 12, 0, 11);
panel.add(lblTitle, gridBagConstraints1);
cbUptodate.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbUptodate.text")); // NOI18N
cbUptodate.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbUptodate.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 1;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (5, 24, 0, 0);
panel.add(cbUptodate, gridBagConstraints1);
cbModified.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbModified.text")); // NOI18N
cbModified.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbModified.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = 1;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (5, 12, 0, 11);
panel.add(cbModified, gridBagConstraints1);
cbLocAdded.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbLocAdded.text")); // NOI18N
cbLocAdded.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbLocAdded.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 2;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 24, 0, 0);
panel.add(cbLocAdded, gridBagConstraints1);
cbLocRemoved.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbLocRemoved.text")); // NOI18N
cbLocRemoved.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbLocRemoved.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = 2;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 12, 0, 11);
panel.add(cbLocRemoved, gridBagConstraints1);
cbNeedsMerge.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsMerge.text")); // NOI18N
cbNeedsMerge.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsMerge.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 3;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 24, 0, 0);
panel.add(cbNeedsMerge, gridBagConstraints1);
cbNeedsPatch.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsPatch.text")); // NOI18N
cbNeedsPatch.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsPatch.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = 3;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 12, 0, 11);
panel.add(cbNeedsPatch, gridBagConstraints1);
cbNeedsCheckout.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsCheckout.text")); // NOI18N
cbNeedsCheckout.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbNeedsCheckout.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 4;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 24, 0, 0);
panel.add(cbNeedsCheckout, gridBagConstraints1);
cbHasConflict.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbHasConflicts.text")); // NOI18N
cbHasConflict.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbHasConflicts.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = 4;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets (0, 12, 0, 11);
panel.add(cbHasConflict, gridBagConstraints1);
cbUnknown.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbUnknown.text")); // NOI18N
cbUnknown.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.cbUnknown.mnemonic").charAt(0)); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 5;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints1.insets = new java.awt.Insets (0, 24, 0, 0);
panel.add(cbUnknown, gridBagConstraints1);
lblCount.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/cvsclient/commands/status/Bundle").getString("StatusTreeInfoPanel.lblCount")); // NOI18N
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 6;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints1.insets = new java.awt.Insets(12, 12, 2, 11);
panel.add(lblCount, gridBagConstraints1);
//---- END OF COPIED STUFF ===========================================================================
// ===================*******************************************=====================================
ActionListener listener = (new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
checkBoxChanged();
}
});
cbUptodate.addActionListener(listener);
cbModified.addActionListener(listener);
cbNeedsPatch.addActionListener(listener);
cbNeedsMerge.addActionListener(listener);
cbHasConflict.addActionListener(listener);
cbLocAdded.addActionListener(listener);
cbLocRemoved.addActionListener(listener);
cbNeedsCheckout.addActionListener(listener);
cbUnknown.addActionListener(listener);
cbUptodate.setSelected(true);
cbModified.setSelected(true);
cbNeedsPatch.setSelected(true);
cbNeedsMerge.setSelected(true);
cbHasConflict.setSelected(true);
cbLocAdded.setSelected(true);
cbLocRemoved.setSelected(true);
cbNeedsCheckout.setSelected(true);
cbUnknown.setSelected(true);
}
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;
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
if (node != null) {
Object userObj = node.getUserObject();
if (userObj != null) {
if (userObj instanceof StatusInformation) { //is statusInfo
StatusInformation info = (StatusInformation)userObj;
String status = statusManager.getStatus(statusManager.convertStatus(info.getStatus()));
label.setText(info.getFile().getName() + " [" + status + "]"); // NOI18N
}
}
}
}
return comp;
}
/*
public Component getListCellRendererComponent(javax.swing.JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
JLabel comp = (JLabel) super.getListCellRendererComponent(list,
value, index, isSelected, cellHasFocus);
StatusInformation info = (StatusInformation) value;
String name = comp.getText();
name = statusManager.getStatus(statusManager.convertStatus(info.getStatus())) + "\t" + name;
comp.setText(name);
return comp;
}
*/
/** Does the actual display - docking into the javacvs Mode,
* displaying as single Dialog.. whatever.
*/
public void displayOutputData() {
String title = NbBundle.getMessage(StatusTreeInfoPanel.class, "CvsStatus.dialogTitle", topDirectory.getName()); // NOI18N
FsCommandFactory.displayOutputPanel(title, this);
}
/** in this method the displayer should use the data returned by the command to
* produce it's own data structures/ fill in UI components
* @param resultList - the data from the command. It is assumed the Displayer
* knows what command the data comes from and most important in what format.
* (which FileInfoContainer class is used).
*/
public void setDataToDisplay(Collection resultList) {
totalCount = 0;
selectedCount = 0;
super.setDataToDisplay(resultList);
Integer selCount = new Integer(selectedCount);
Integer totCount = new Integer(totalCount);
String txt = NbBundle.getMessage(StatusTreeInfoPanel.class, "StatusTreeInfoPanel.lblCount", // NOI18N
selCount.toString(), totCount.toString());
lblCount.setText(txt);
}
/** to be overidden in case more than the filemane is to be displaed in the Table
* it needs to be a tablemodel implementing the CommandTableModel methods
*/
protected TableInfoModel createTableModel() {
TableInfoModel model = new TableInfoModel();
Class classa = StatusInformation.class;
String column1 = NbBundle.getBundle(StatusTreeInfoPanel.class).getString("StatusTableInfoModel.status"); // NOI18N
String column2 = NbBundle.getBundle(StatusTreeInfoPanel.class).getString("StatusTableInfoModel.fileName"); // NOI18N
try {
Method method1 = classa.getMethod("getStatus", null); // NOI18N
Method method2 = classa.getMethod("getFile", null); // NOI18N
model.setColumnDefinition(0, column1, method1, true, new StatusComparator());
model.setColumnDefinition(1, column2, method2, true, new FileComparator());
} catch (NoSuchMethodException exc) {
Thread.dumpStack();
} catch (SecurityException exc2) {
Thread.dumpStack();
}
return model;
}
/** Does the actual display - docking into the javacvs Mode,
* displaying as single Dialog.. whatever.
*/
/* public void displayOutputData(int moment,Object data) {
if (moment == CommandDisplayer.MOMENT_AFTER_EACH_EXECUTE) {
Collection col = (Collection)data;
setDataToDisplay(col);
displayOutputData();
}
}
*/
public JComponent getComponent() {
return this;
}
public Object getComparisonData() {
return topDirectory;
}
/**
* Persistent stuff...
*/
public boolean equalDisplayedData(File file, Class type, Object comparisonData) {
if (!getClass().equals(type)) return false;
if (topDirectory == null ||
!topDirectory.equals(file)) {
return false;
}
return true;
}
public File getFileDisplayed() {
return topDirectory;
}
public String getCommandSwitches() {
return command.getCVSArguments();
}
public FileSystemCommand getFileSystemCommand() {
return command;
}
}
|
| ... 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.