diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2013-02-08 15:17:48 +0100 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2013-02-08 15:17:48 +0100 |
| commit | 8849a5f9cdea4c5cabc2216b38f35274375b4c05 (patch) | |
| tree | 39f0a2962629f31d03288001d71b987fbb5ef62c /src/main/java | |
| parent | 1e7f63219e88b36d788dda8cc4d07c13f840d82d (diff) | |
Added bouncy bar to the status pane to make people feel better when the
system is busy.
Diffstat (limited to 'src/main/java')
12 files changed, 106 insertions, 90 deletions
diff --git a/src/main/java/com/c2kernel/gui/EntityDetails.java b/src/main/java/com/c2kernel/gui/EntityDetails.java index 93a0f1f..5ea1946 100644 --- a/src/main/java/com/c2kernel/gui/EntityDetails.java +++ b/src/main/java/com/c2kernel/gui/EntityDetails.java @@ -93,6 +93,7 @@ public class EntityDetails extends JPanel implements ChangeListener, Runnable { myTabbedPane.setVisible(true);
myTabbedPane.addChangeListener(this);
validate();
+ MainFrame.progress.stopBouncing("Done");
}
diff --git a/src/main/java/com/c2kernel/gui/EntityFinder.java b/src/main/java/com/c2kernel/gui/EntityFinder.java index 71903eb..7a16f26 100644 --- a/src/main/java/com/c2kernel/gui/EntityFinder.java +++ b/src/main/java/com/c2kernel/gui/EntityFinder.java @@ -110,7 +110,6 @@ public class EntityFinder extends Box implements Runnable { findNextButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- MainFrame.status.setText("Navigating to next match");
nextMatch();
}
});
@@ -152,19 +151,25 @@ public class EntityFinder extends Box implements Runnable { @Override
public void run() {
Thread.currentThread().setName("Entity Search");
- MainFrame.status.setText("Searching. Please Wait");
+ MainFrame.progress.startBouncing("Searching. Please Wait");
findButton.setEnabled(false); findNextButton.setEnabled(false);
String searchTerm = inputField.getText();
if (searchTerm.length() == 0) return; // don't allow null searches
findNextButton.setEnabled(false);
- matches = lookup.search(rootNode,inputField.getText());
+ String term = inputField.getText();
+// The following block does property searching when the field contains a colon, but that returns EntityPaths, which the tree can't handle
+// int colonPos = term.indexOf(':');
+// if (colonPos > 0)
+// matches = lookup.search(rootNode,term.substring(0, colonPos), term.substring(colonPos+1));
+// else
+ matches = lookup.search(rootNode,term);
if (!matches.hasMoreElements()) {
- MainFrame.status.setText("No results");
+ MainFrame.progress.stopBouncing("No results");
currentConsumer.push(searchTerm); // for subscribers who don't care if it exists
findButton.setEnabled(true);
return;
}
- MainFrame.status.setText("Selecting first match.");
+ MainFrame.progress.stopBouncing("Selecting first match.");
nextMatch();
}
diff --git a/src/main/java/com/c2kernel/gui/EntityTabManager.java b/src/main/java/com/c2kernel/gui/EntityTabManager.java index ef36cbb..02d97fe 100644 --- a/src/main/java/com/c2kernel/gui/EntityTabManager.java +++ b/src/main/java/com/c2kernel/gui/EntityTabManager.java @@ -30,8 +30,7 @@ public class EntityTabManager extends JPanel super();
setLayout(new GridLayout(1,1));
setBorder(BorderFactory.createLoweredBevelBorder());
- //UIDefaults ui = UIManager.getDefaults();
- //ui.put("TabbedPane.selected",Color.red);
+
add(tabbedPane);
}
@@ -39,7 +38,8 @@ public class EntityTabManager extends JPanel EntityDetails requestedDetails;
if (!openItems.containsKey(new Integer(thisEntity.getSysKey()))) {
- Logger.msg(1, "ItemWindowManager.add() - Window for syskey "+thisEntity.getSysKey()+" not found. Opening new one.");
+ MainFrame.progress.startBouncing("Opening "+thisEntity.getName()+". Please wait.");
+ Logger.msg(1, "ItemWindowManager.add() - Window for syskey "+thisEntity.getSysKey()+" not found. Opening new one.");
requestedDetails = new EntityDetails(thisEntity);
Thread itemLoader = new Thread(requestedDetails);
itemLoader.start();
@@ -49,7 +49,6 @@ public class EntityTabManager extends JPanel // get currently selected item to set location
tabbedPane.addTab(thisEntity.getName(), thisEntity.getIcon(), requestedDetails, Integer.toString(thisEntity.getSysKey()));
-
}
else { //opened window but different nodeitem
requestedDetails = openItems.get(new Integer(thisEntity.getSysKey()));
diff --git a/src/main/java/com/c2kernel/gui/MainFrame.java b/src/main/java/com/c2kernel/gui/MainFrame.java index 577db7b..1e9123f 100644 --- a/src/main/java/com/c2kernel/gui/MainFrame.java +++ b/src/main/java/com/c2kernel/gui/MainFrame.java @@ -1,8 +1,5 @@ package com.c2kernel.gui;
-import java.awt.BorderLayout;
-import java.awt.Color;
import java.awt.Dimension;
-import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
@@ -14,13 +11,10 @@ import java.net.URL; import java.util.Properties;
import java.util.StringTokenizer;
-import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
-import javax.swing.JLabel;
import javax.swing.JOptionPane;
-import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@@ -48,7 +42,8 @@ public class MainFrame extends javax.swing.JFrame { protected MenuBuilder menuBuilder;
protected org.omg.CORBA.ORB orb;
public static Properties prefs = new Properties();
- public static JLabel status = new JLabel();
+
+ public static ProgressReporter progress;
public String logoURL;
public static AgentProxy userAgent;
protected JSplitPane splitPane;
@@ -179,21 +174,14 @@ public class MainFrame extends javax.swing.JFrame { c.fill = GridBagConstraints.BOTH;
gridbag.setConstraints(getSplitPanel(), c);
getContentPane().add(getSplitPanel());
- // setup status bar
- status.setText("Cristal 2");
- status.setFont(
- new Font("SansSerif", Font.PLAIN, status.getFont().getSize()));
- JPanel statusPanel = new JPanel();
- statusPanel.setLayout(new BorderLayout());
- statusPanel.setBorder(BorderFactory.createLoweredBevelBorder());
- status.setForeground(Color.black);
- statusPanel.add(status);
+ progress = new ProgressReporter();
c.gridy++;
c.weighty = 0.0;
- gridbag.setConstraints(statusPanel, c);
- getContentPane().add(statusPanel);
+ gridbag.setConstraints(progress, c);
+ getContentPane().add(progress);
pack();
+
String paneSize = getPref("WindowSize", null);
if (paneSize != null) {
StringTokenizer tok = new StringTokenizer(paneSize, ",");
diff --git a/src/main/java/com/c2kernel/gui/ProgressReporter.java b/src/main/java/com/c2kernel/gui/ProgressReporter.java new file mode 100644 index 0000000..9cfb1d7 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/ProgressReporter.java @@ -0,0 +1,72 @@ +/*
+ * ProgressReporter.java
+ *
+ * Copyright (c) 2013, The CRISTAL Consortium. All rights reserved.
+ *
+ * CRISTAL kernel is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see:
+ * http://www.gnu.org/licenses/
+ */
+
+package com.c2kernel.gui;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JLabel;
+import javax.swing.JProgressBar;
+
+public class ProgressReporter extends Box {
+
+ JLabel status = new JLabel();
+ JProgressBar progress = new JProgressBar();
+
+ /**
+ *
+ */
+ public ProgressReporter() {
+ super(BoxLayout.X_AXIS);
+ status.setText("Cristal");
+ //status.setBorder(BorderFactory.createLoweredBevelBorder());
+ status.setForeground(Color.black);
+ status.setPreferredSize(new Dimension(400, progress.getPreferredSize().height));
+ //progress.setBorder(BorderFactory.createLoweredBevelBorder());
+ add(status);
+ //add(Box.createHorizontalGlue());
+ progress.setPreferredSize(new Dimension(200, progress.getPreferredSize().height));
+ add(progress);
+ }
+
+ /**
+ * @param status
+ */
+ public void startBouncing(String statusString) {
+ status.setText(statusString);
+ progress.setIndeterminate(true);
+ }
+
+ /**
+ * @param status
+ */
+ public void stopBouncing(String statusString) {
+ status.setText(statusString);
+ progress.setIndeterminate(false);
+ }
+
+ public void setProgress(String statusString, int percent) {
+ progress.setIndeterminate(false);
+ progress.setValue(percent);
+ }
+}
diff --git a/src/main/java/com/c2kernel/gui/TreeBrowser.java b/src/main/java/com/c2kernel/gui/TreeBrowser.java index b812686..60d6330 100644 --- a/src/main/java/com/c2kernel/gui/TreeBrowser.java +++ b/src/main/java/com/c2kernel/gui/TreeBrowser.java @@ -121,9 +121,7 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer tree.makeVisible(targetNode);
// open it
if (currentNode instanceof NodeEntity) {
- MainFrame.status.setText("Opening "+currentNode.getName());
desktop.add((NodeEntity)currentNode);
- MainFrame.status.setText("Done");
}
}
@@ -205,7 +203,6 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer if (source instanceof NodeEntity) {
NodeEntity thisNode = (NodeEntity)source;
desktop.add(thisNode);
- MainFrame.status.setText("Opened "+thisNode.getName());
}
if (source instanceof DynamicTreeBuilder) {
DynamicTreeBuilder thisLoader = (DynamicTreeBuilder)source;
diff --git a/src/main/java/com/c2kernel/gui/collection/SelectedMemberPanel.java b/src/main/java/com/c2kernel/gui/collection/SelectedMemberPanel.java index 489f316..9e7d93c 100644 --- a/src/main/java/com/c2kernel/gui/collection/SelectedMemberPanel.java +++ b/src/main/java/com/c2kernel/gui/collection/SelectedMemberPanel.java @@ -75,12 +75,10 @@ public class SelectedMemberPanel extends SelectedVertexPanel implements DomainKe @Override
public void actionPerformed(ActionEvent ae) {
if (changeButton.getModel().isSelected()) {
- MainFrame.status.setText(Language.translate("Please scan or type your barcode to assign in the top field"));
MainFrame.itemFinder.setConsumer(me, "Assign");
findButton.setEnabled(false);
}
else {
- MainFrame.status.setText("");
MainFrame.itemFinder.clearConsumer(me);
if (selectedMember.getEntityKey() > -1) findButton.setEnabled(true);
}
@@ -143,7 +141,6 @@ public class SelectedMemberPanel extends SelectedVertexPanel implements DomainKe */
@Override
public void push(DomainPath key) {
- MainFrame.status.setText("Assigning entity "+key.getSysKey()+" to slot "+selectedMember.getID());
try {
selectedMember.assignEntity(key.getSysKey());
select(selectedMember);
diff --git a/src/main/java/com/c2kernel/gui/tabs/AgentPropertiesPane.java b/src/main/java/com/c2kernel/gui/tabs/AgentPropertiesPane.java deleted file mode 100644 index f0ae533..0000000 --- a/src/main/java/com/c2kernel/gui/tabs/AgentPropertiesPane.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.c2kernel.gui.tabs;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-
-/**************************************************************************
- *
- * $Revision: 1.2 $
- * $Date: 2005/07/05 11:34:17 $
- *
- * Copyright (C) 2003 CERN - European Organization for Nuclear Research
- * All rights reserved.
- **************************************************************************/
-
-
-public class AgentPropertiesPane extends EntityTabPane {
-
- JTable roleTable;
- JTextField newPassword;
- JTextField newPasswordConfirm;
- JButton changePassword;
-
- public AgentPropertiesPane() {
- super("Properties", "Agent Details");
- initPanel();
- getGridBagConstraints();
- c.gridy++;
- JLabel roleHeader = new JLabel("Roles held");
- roleHeader.setFont(titleFont);
- roleHeader.setForeground(headingColor);
- gridbag.setConstraints(roleHeader, c);
- add(roleHeader);
- roleTable = new JTable(1,1);
- JScrollPane roleScroll = new JScrollPane(roleTable);
- c.gridy++;
- gridbag.setConstraints(roleScroll, c);
- add(roleScroll);
-
- //JLabel passHeader = new JLabel("Change password");
- //TODO: Finish agent admin page
- }
-
- @Override
- public void run() {
-
- }
-
-}
diff --git a/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java b/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java index 5d01933..fe5c1a4 100644 --- a/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/HistoryPane.java @@ -25,6 +25,7 @@ import com.c2kernel.entity.proxy.EntityProxyObserver; import com.c2kernel.entity.proxy.MemberSubscription;
import com.c2kernel.events.Event;
import com.c2kernel.events.History;
+import com.c2kernel.gui.MainFrame;
import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.utils.Language;
@@ -96,6 +97,7 @@ public class HistoryPane extends EntityTabPane implements ActionListener, Entity @Override
public void run() {
Thread.currentThread().setName("History Pane Builder");
+ MainFrame.progress.startBouncing("Loading history");
try {
history = (History)sourceEntity.getEntity().getObject(ClusterStorage.HISTORY);
sourceEntity.getEntity().subscribe(new MemberSubscription<Event>(this, ClusterStorage.HISTORY, true));
@@ -265,8 +267,10 @@ public class HistoryPane extends EntityTabPane implements ActionListener, Entity @Override
public void control(String control, String msg) {
- // TODO Auto-generated method stub
-
+ if (control.equals(MemberSubscription.END))
+ MainFrame.progress.stopBouncing("History loading complete.");
+ else
+ MainFrame.progress.stopBouncing("History: "+msg);
}
}
diff --git a/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java b/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java index 9e5a9b2..528b18b 100644 --- a/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java @@ -43,6 +43,7 @@ import com.c2kernel.utils.Language; public class PropertiesPane extends EntityTabPane implements EntityProxyObserver<Property>, ActionListener {
Box propertyBox;
+ JButton eraseButton;
boolean subbed = false;
HashMap<String, JLabel> loadedProps = new HashMap<String, JLabel>();
JLabel domTitle;
@@ -82,7 +83,7 @@ public class PropertiesPane extends EntityTabPane implements EntityProxyObserver if ("true".equals(Gateway.getProperty("EnableItemErase"))) {
c.gridy++;
c.fill = GridBagConstraints.NONE;
- JButton eraseButton = new JButton(Language.translate("Erase!"));
+ eraseButton = new JButton(Language.translate("Erase!"));
eraseButton.addActionListener(this);
eraseButton.setActionCommand("Erase Item");
gridbag.setConstraints(eraseButton, c);
@@ -104,6 +105,7 @@ public class PropertiesPane extends EntityTabPane implements EntityProxyObserver if (sourceEntity instanceof NodeAgent) {
remove(domAdmin);
remove(domTitle);
+ eraseButton.setEnabled(false);
}
else if (domAdmin != null)
domAdmin.setEntity((ItemProxy)sourceEntity.getEntity());
diff --git a/src/main/java/com/c2kernel/gui/tabs/execution/DefaultExecutor.java b/src/main/java/com/c2kernel/gui/tabs/execution/DefaultExecutor.java index 378cc2e..848d1d3 100644 --- a/src/main/java/com/c2kernel/gui/tabs/execution/DefaultExecutor.java +++ b/src/main/java/com/c2kernel/gui/tabs/execution/DefaultExecutor.java @@ -23,9 +23,11 @@ public class DefaultExecutor implements Executor { @Override
public void execute(Job job, JLabel status) throws Exception {
- status.setText(Language.translate("Requesting, please wait."));
+ status.setText(Language.translate("Submitting..."));
+ MainFrame.progress.startBouncing("Requesting, please wait.");
MainFrame.userAgent.execute(job);
- status.setText(Language.translate("Execution complete. Waiting for joblist update."));
+ MainFrame.progress.stopBouncing("Execution complete.");
+ status.setText("Waiting for joblist update.");
}
@Override
diff --git a/src/main/java/com/c2kernel/gui/tree/NodeAgent.java b/src/main/java/com/c2kernel/gui/tree/NodeAgent.java index 45ffb07..cda6579 100644 --- a/src/main/java/com/c2kernel/gui/tree/NodeAgent.java +++ b/src/main/java/com/c2kernel/gui/tree/NodeAgent.java @@ -26,7 +26,7 @@ public class NodeAgent extends NodeEntity { public ArrayList<String> getTabs() {
ArrayList<String> requiredTabs = super.getTabs();
- requiredTabs.add("AgentProperties");
+ requiredTabs.add("Properties");
requiredTabs.add("JobList");
return requiredTabs;
}
|
