Author: pwang
Date: 2009-04-01 13:59:11 -0700 (Wed, 01 Apr 2009)
New Revision: 16400
Modified:
csplugins/trunk/ucsd/pwang/cyprovision/org.eclipse.equinox.p2.ui2/src/org/eclipse/equinox/internal/provisional/p2/ui2/dialogs/InstallNewSoftwarePanel.java
Log:
Disable Install button if no IUs are selected
Modified:
csplugins/trunk/ucsd/pwang/cyprovision/org.eclipse.equinox.p2.ui2/src/org/eclipse/equinox/internal/provisional/p2/ui2/dialogs/InstallNewSoftwarePanel.java
===================================================================
---
csplugins/trunk/ucsd/pwang/cyprovision/org.eclipse.equinox.p2.ui2/src/org/eclipse/equinox/internal/provisional/p2/ui2/dialogs/InstallNewSoftwarePanel.java
2009-04-01 20:52:24 UTC (rev 16399)
+++
csplugins/trunk/ucsd/pwang/cyprovision/org.eclipse.equinox.p2.ui2/src/org/eclipse/equinox/internal/provisional/p2/ui2/dialogs/InstallNewSoftwarePanel.java
2009-04-01 20:59:11 UTC (rev 16400)
@@ -15,6 +15,7 @@
import org.eclipse.equinox.internal.p2.ui2.model.QueriedElement;
import org.eclipse.equinox.internal.p2.ui2.model.AvailableIUElement;
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.internal.provisional.p2.ui2.IUPropertyUtils;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
@@ -22,11 +23,16 @@
import
org.eclipse.equinox.internal.provisional.p2.ui2.dialogs.RepositoryManipulationDialog;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
-
+import java.util. Enumeration;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import java.util.Date;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.HashSet;
+import java.util.Iterator;
-
public class InstallNewSoftwarePanel extends JPanel implements ActionListener,
ItemListener,MouseListener {
JDialog dlg;
@@ -40,7 +46,8 @@
private String AllAvailableSites = "All Available Sites";
private URI repositoryFilter = null;
private RepositorySetting lastRepositorySetting = new
RepositorySetting(); // use default setting
-
+ private HashSet checkedIUElements = null;
+
/** Creates new form AvailableSoftwarePanel */
public InstallNewSoftwarePanel(JDialog dlg, Policy policy, String
profileId, QueryableMetadataRepositoryManager manager) {
@@ -79,36 +86,73 @@
jTree1.setCellRenderer(r);
- jTree1.addMouseListener(new MouseAdapter() {
- public void mouseReleased(MouseEvent e) {
- // Invoke later to ensure all mouse handling is completed
- SwingUtilities.invokeLater(new Runnable() { public void run() {
- CheckBoxTreeCellRenderer rr =
(CheckBoxTreeCellRenderer)jTree1.getCellRenderer();
- String text1 = createText(rr.getCheckedPaths());
+ jTree1.addMouseListener(new MyMouseListener() );
- System.out.println("\tgetCheckedPaths():\n"+ text1);
- }});
- }
- });
-
DefaultTreeModel model= rebuildTreeModel();
jTree1.setModel(model);
-
}
- private static String createText(TreePath[] paths) {
- if (paths.length == 0) {
- return "Nothing checked";
+ private class MyMouseListener extends MouseAdapter {
+ public void mouseReleased(MouseEvent e) {
+ // Invoke later to ensure all mouse handling is completed
+ SwingUtilities.invokeLater(new Runnable() { public void run() {
+ updateCheckedIUs();
+ // Disable btnInstall if nothing is checked or the whole tree
is checked
+ if (checkedIUElements.size() == 0){
+ btnInstall.setEnabled(false);
+ }
+ else {
+ btnInstall.setEnabled(true);
+ }
+ }});
+ }
+ }
+
+
+ private void updateCheckedIUs() {
+
+ CheckBoxTreeCellRenderer rr = (CheckBoxTreeCellRenderer)
jTree1.getCellRenderer();
+ TreePath[] checkedPaths = rr.getCheckedPaths();
+
+ checkedIUElements = new HashSet();
+
+ if (checkedPaths.length == 0) {
+ return;
}
- String checked = "Checked:\n";
- for (int i=0;i < paths.length;i++) {
- checked += paths[i] + "\n";
+
+ DefaultMutableTreeNode node = (DefaultMutableTreeNode)
checkedPaths[0].getLastPathComponent();
+ if (checkedPaths.length == 1 &&
node.getUserObject().toString().equalsIgnoreCase("JTree") && repositoryFilter
== null) {
+ // selected all IUs in "All Available sites", this is
not allowed
+ return;
}
- return checked;
- }
+
+ for (int i=0;i < checkedPaths.length;i++) {
+ node = (DefaultMutableTreeNode)
checkedPaths[i].getLastPathComponent();
+ for (Enumeration nodes = node.depthFirstEnumeration();
nodes.hasMoreElements();){
+ DefaultMutableTreeNode treeNode =
(DefaultMutableTreeNode) nodes.nextElement();
+ if (treeNode.getUserObject() instanceof
AvailableIUElement){
+
checkedIUElements.add((AvailableIUElement)treeNode.getUserObject());
+ }
+ }
+ }
+ }
+ //System.out.println("\nXXXXXXXXXX "+ getDateTime() +"\n");
+ //Iterator it = checkedIUElements.iterator();
+ //while (it.hasNext()){
+ // AvailableIUElement element = (AvailableIUElement)
it.next();
+ // System.out.println(element.getIU().getId()+ "--" +
element.getIU().getVersion());
+ //}
+ //System.out.println("\n");
+ //private String getDateTime() {
+ // DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+ // Date date = new Date();
+ // return dateFormat.format(date);
+ //}
+
+
Object getNewInput() {
System.out.println("getNewInput(): repositoryFilter
="+repositoryFilter);
@@ -136,7 +180,9 @@
TreeSelectionListener treeSelectionListener = new
TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent tse){
+ // Handle the detail area
JTree theTree = (JTree) tse.getSource();
+
TreePath[] selectedPaths =
theTree.getSelectionPaths();
if (selectedPaths == null){
@@ -148,17 +194,27 @@
TreePath thePath = selectedPaths[0];
DefaultMutableTreeNode theNode =
(DefaultMutableTreeNode) thePath.getLastPathComponent();
Object node_userObj =
theNode.getUserObject();
-
//System.out.println("node_userObj.getClass() = "+node_userObj.getClass());
+
if (node_userObj instanceof
AvailableIUElement){
AvailableIUElement
avail_iu_element = (AvailableIUElement) node_userObj;
-
IInstallableUnit installUnit
=avail_iu_element.getIU();
- if
(installUnit.getProperty(IInstallableUnit.PROP_DESCRIPTION) == null){
- taDetails.setText("No
description is available");
+
+ StringBuffer result = new
StringBuffer();
+ String description =
IUPropertyUtils.getIUProperty(installUnit, IInstallableUnit.PROP_DESCRIPTION);
+
+ if (description != null) {
+
result.append(description);
+ } else {
+ String name =
IUPropertyUtils.getIUProperty(installUnit, IInstallableUnit.PROP_NAME);
+ if (name != null)
+
result.append(name);
+ else
+
result.append(installUnit.getId());
+ result.append(" ");
//$NON-NLS-1$
+
result.append(installUnit.getVersion().toString());
}
- else {
-
taDetails.setText(installUnit.getProperty(IInstallableUnit.PROP_DESCRIPTION));
- }
+
+
taDetails.setText(result.toString());
}
}
else if (selectedPaths.length > 1){
@@ -170,7 +226,9 @@
}
+
void fillRepoCombo(final String selection) {
+
if (repoCombo == null || policy.getRepositoryManipulator() ==
null)
return;
@@ -191,21 +249,6 @@
}
- void repoComboSelectionChanged() {
- /*
- int selection = repoCombo.getSelectionIndex();
- if (comboRepos == null || selection > comboRepos.length)
- selection = INDEX_ALL;
-
- if (selection == INDEX_ALL) {
- availableIUGroup.setRepositoryFilter(null);
- } else if (selection > 0) {
-
availableIUGroup.setRepositoryFilter(comboRepos[selection - 1]);
- }
- */
- }
-
-
private void makeQueryContext() {
// Make a local query context that is based on the default.
IUViewQueryContext defaultQueryContext =
policy.getQueryContext();
@@ -252,6 +295,7 @@
public void itemStateChanged(ItemEvent ie) {
+ /*
if (ie.getSource() instanceof JCheckBox) {
JCheckBox chk = (JCheckBox) ie.getSource();
if (chk == useCategoriesCheckbox) {
@@ -268,7 +312,7 @@
//System.out.println("repoCombo state changed");
}
}
-
+ */
updateJTree();
}
@@ -287,8 +331,6 @@
}
// The setting has been changed, do updating now
- System.out.println("updateJTree()...");
-
try {
repositoryFilter =new
URI(currentRepSetting.getSelectedRepository());
}
@@ -300,8 +342,10 @@
repositoryFilter = null;
}
updateQueryContext(currentRepSetting);
-
+
DefaultTreeModel newModel= rebuildTreeModel();
+ CheckBoxTreeCellRenderer rr = (CheckBoxTreeCellRenderer)
jTree1.getCellRenderer();
+ rr.clearCheckedPaths();
jTree1.setModel(newModel);
}
@@ -313,12 +357,7 @@
Object obj = getNewInput();
- System.out.println("obj.getClass()"+ obj.getClass());
-
if (obj instanceof MetadataRepositories){
-
- System.out.println("Case for MetadataRepositories");
-
MetadataRepositories repos = (MetadataRepositories) obj;
if (!repos.hasChildren(null)){
@@ -350,18 +389,8 @@
return new DefaultTreeModel(null);
}
- //parent = new DefaultMutableTreeNode();
- //parent.setUserObject(repoElement);
-
-
Object[] cat_children = repoElement.getChildren(null);
-
- System.out.println("repoElement has " +
cat_children.length+ " Children");
-
for (int j=0; j<cat_children.length; j++){
-
- System.out.println("\t child type : "
+cat_children[j].getClass());
-
parent = new DefaultMutableTreeNode();
parent.setUserObject(cat_children[j]);
@@ -375,14 +404,9 @@
iu3.setUserObject(childrenObjs[k]);
parent.add(iu3);
}
-
}
-
root.add(parent);
}
-
-
-
}
else {
//this should not happen, otherwise there is something
wrong
@@ -392,60 +416,6 @@
}
- private DefaultTreeModel rebuildTreeModel_1(){
-
- DefaultMutableTreeNode root = new DefaultMutableTreeNode("JTree");
- DefaultMutableTreeNode parent;
-
- if (repositoryFilter != null){
- MetadataRepositoryElement repoElement =
(MetadataRepositoryElement)getNewInput();
-
- String name =
((AvailableIUElement)repoElement.getChildren(null)[0]).getIU().getProperty("org.eclipse.equinox.p2.name");
- parent = new DefaultMutableTreeNode(name);
-
- Object[] availIUElementObjs =
repoElement.getChildren(null);
-
- for (int j=0; j<availIUElementObjs.length; j++){
- AvailableIUElement availIUElement =
(AvailableIUElement) availIUElementObjs[j];
-
- String iu_name_version =
availIUElement.getIU().getProperty("org.eclipse.equinox.p2.name") + " ---
version " +availIUElement.getIU().getVersion();
- DefaultMutableTreeNode iu1 = new
DefaultMutableTreeNode(iu_name_version);
- parent.add(iu1);
- }
-
- root.add(parent);
- }
- else { //repositoryFilter = null, i.e. Selected "All Available
Sites"
- MetadataRepositories repos = (MetadataRepositories)
getNewInput();
-
- Object [] objs = repos.getChildren(null);
-
- int repoCount = objs.length;
-
- for (int i=0; i< repoCount; i++){
- CategoryElement catElement = (CategoryElement) objs[i];
-
- String cat_name =
catElement.getIU().getProperty("org.eclipse.equinox.p2.name");
- parent = new DefaultMutableTreeNode(cat_name);
-
- Object[] availIUElementObjs =
catElement.getChildren(null);
-
- for (int j=0; j<availIUElementObjs.length; j++){
- AvailableIUElement availIUElement =
(AvailableIUElement) availIUElementObjs[j];
-
- String iu_name_version =
availIUElement.getIU().getProperty("org.eclipse.equinox.p2.name") + " ---
version " +availIUElement.getIU().getVersion();
- DefaultMutableTreeNode iu1 = new
DefaultMutableTreeNode(iu_name_version);
- parent.add(iu1);
- }
-
- root.add(parent);
- }
- }
-
- return new DefaultTreeModel(root);
- }
-
-
private void updateQueryContext(RepositorySetting pRepQuerySetting){
//
IUViewQueryContext defaultQueryContext =
policy.getQueryContext();
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en
-~----------~----~----~----~------~----~------~--~---