summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/gui/tabs/ViewpointPane.java
diff options
context:
space:
mode:
authorabranson <andrew.branson@cern.ch>2011-08-04 00:42:34 +0200
committerabranson <andrew.branson@cern.ch>2011-08-04 00:42:34 +0200
commit0ec8481c10cd8277d84c7c1a785483a0a739e5a0 (patch)
tree5f6e5d9ae75193e67e6f3b3dfa488960c5cde1d5 /source/com/c2kernel/gui/tabs/ViewpointPane.java
parent036cbdba66f804743c4c838ed598d6972c4b3e17 (diff)
More code cleanup:
Refactored Entity Proxy Subscription to handle generics better Rewrote RemoteMap to use TreeMap instead of the internal array for order. It now sorts its keys by number if they parse, else as strings. Removed a no-longer-in-progress outcome form class
Diffstat (limited to 'source/com/c2kernel/gui/tabs/ViewpointPane.java')
-rw-r--r--source/com/c2kernel/gui/tabs/ViewpointPane.java202
1 files changed, 107 insertions, 95 deletions
diff --git a/source/com/c2kernel/gui/tabs/ViewpointPane.java b/source/com/c2kernel/gui/tabs/ViewpointPane.java
index 31e18c3..a0f63ab 100644
--- a/source/com/c2kernel/gui/tabs/ViewpointPane.java
+++ b/source/com/c2kernel/gui/tabs/ViewpointPane.java
@@ -27,6 +27,7 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.entity.proxy.EntityProxyObserver;
import com.c2kernel.entity.proxy.ItemProxy;
+import com.c2kernel.entity.proxy.MemberSubscription;
import com.c2kernel.events.Event;
import com.c2kernel.gui.MainFrame;
import com.c2kernel.gui.tabs.outcome.OutcomeException;
@@ -39,15 +40,15 @@ import com.c2kernel.utils.Language;
import com.c2kernel.utils.LocalObjectLoader;
import com.c2kernel.utils.Logger;
-public class ViewpointPane extends EntityTabPane implements ItemListener, ActionListener, EntityProxyObserver {
-
+public class ViewpointPane extends EntityTabPane implements ItemListener, ActionListener, EntityProxyObserver<C2KLocalObject> {
+
JComboBox<String> schemas;
JComboBox<Viewpoint> views;
JComboBox<EventItem> events;
JLabel eventDetails;
JButton exportButton;
JButton viewButton;
-
+
ArrayList<String> schemaList;
ArrayList<Viewpoint> viewpointList;
ArrayList<EventItem> eventList;
@@ -55,11 +56,11 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
Outcome currentOutcome = null;
OutcomeHandler thisOutcome;
boolean suspendSelection = false;
-
+
JPanel dataView = new JPanel(new GridLayout(1,1));
-
+
public ViewpointPane() {
-
+
super("Data Viewer", "Outcome Browser");
initialize();
}
@@ -96,14 +97,14 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
viewBox.add(views);
viewBox.add(Box.createHorizontalGlue());
views.addItemListener(this);
-
+
gridbag.setConstraints(viewBox, c);
this.add(viewBox);
-
- // Set up event details box
+
+ // Set up event details box
c.gridy++;
- Box eventBox = Box.createHorizontalBox();
-
+ Box eventBox = Box.createHorizontalBox();
+
label = new JLabel(Language.translate("Event")+":", SwingConstants.LEFT);
eventBox.add(label);
eventBox.add(Box.createHorizontalStrut(7));
@@ -112,29 +113,29 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
eventBox.add(events);
eventBox.add(Box.createHorizontalStrut(7));
events.addItemListener(this);
-
+
eventDetails = new JLabel();
eventBox.add(eventDetails);
eventBox.add(Box.createHorizontalGlue());
-
+
if (MainFrame.isAdmin) {
viewButton = new JButton(Language.translate("Write View"));
viewButton.setMargin(new Insets(0, 0, 0, 0));
viewButton.setActionCommand("setview");
- eventBox.add(viewButton);
+ eventBox.add(viewButton);
eventBox.add(Box.createHorizontalStrut(14));
viewButton.addActionListener(this);
}
-
+
exportButton = new JButton(Language.translate("Export"));
exportButton.setMargin(new Insets(0, 0, 0, 0));
exportButton.setActionCommand("export");
exportButton.addActionListener(this);
eventBox.add(exportButton);
-
+
gridbag.setConstraints(eventBox, c);
this.add(eventBox);
-
+
// data pane
c.gridx = 0; c.gridy = 3;
c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.BOTH;
@@ -143,24 +144,26 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
this.add(dataView);
}
- public void reload() {
+ @Override
+ public void reload() {
// reset boxes
schemas.removeAllItems();
- views.removeAllItems();
- events.removeAllItems();
+ views.removeAllItems();
+ events.removeAllItems();
eventDetails.setText("");
-
+
clearView();
-
+
// reload
initForEntity(sourceEntity);
}
- public void run() {
+ @Override
+ public void run() {
Thread.currentThread().setName("Viewpoint Pane Builder");
//Local object subscriptions
- sourceEntity.getEntity().subscribe(this, ClusterStorage.VIEWPOINT, false);
- sourceEntity.getEntity().subscribe(this, ClusterStorage.OUTCOME, false);
+ sourceEntity.getEntity().subscribe(new MemberSubscription<C2KLocalObject>(this, ClusterStorage.VIEWPOINT, false));
+ sourceEntity.getEntity().subscribe(new MemberSubscription<C2KLocalObject>(this, ClusterStorage.OUTCOME, false));
clearView();
schemas.addItem("--");
currentSchema = null;
@@ -168,7 +171,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
try {
String outcomeTypes = sourceEntity.getEntity().queryData(ClusterStorage.VIEWPOINT+"/all");
StringTokenizer tok = new StringTokenizer(outcomeTypes, ",");
- for (int i = 0; tok.countTokens() > 0; i++) {
+ while (tok.hasMoreTokens()) {
String thisType = tok.nextToken();
schemas.addItem(thisType);
schemaList.add(thisType);
@@ -178,13 +181,14 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
}
}
- public void itemStateChanged(ItemEvent e) {
-
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+
Object selectedItem = e.getItem();
- if (e.getStateChange() == ItemEvent.DESELECTED) return;
+ if (e.getStateChange() == ItemEvent.DESELECTED) return;
if (suspendSelection) return;
if (e.getItem().equals("--")) return;
-
+
if (e.getItemSelectable() == schemas)
switchSchema((String)selectedItem);
else if (e.getItemSelectable() == views)
@@ -196,13 +200,13 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
public void switchSchema(String schemaName) {
clearView();
suspendSelection = true;
- views.removeAllItems();
+ views.removeAllItems();
events.removeAllItems();
viewpointList = new ArrayList<Viewpoint>();
eventList = new ArrayList<EventItem>();
currentSchema = schemaName;
-
+
try {
// populate views
String viewNames = sourceEntity.getEntity().queryData(ClusterStorage.VIEWPOINT+"/"+schemaName+"/all");
@@ -217,7 +221,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
lastView = thisView;
viewpointList.add(thisView);
}
-
+
String ocVersions = sourceEntity.getEntity().queryData(ClusterStorage.OUTCOME+"/"+schemaName+"/all");
tok = new StringTokenizer(ocVersions, ",");
while(tok.hasMoreTokens()) {
@@ -227,40 +231,39 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
while(tok2.hasMoreTokens()) {
int eventId = Integer.parseInt(tok2.nextToken());
EventItem newEvent = new EventItem(eventId, schemaVersion);
- for (Iterator iter = viewpointList.iterator(); iter.hasNext();) {
- Viewpoint thisView = (Viewpoint)iter.next();
+ for (Viewpoint thisView : viewpointList) {
if (thisView.getEventId() == eventId)
newEvent.addView(thisView.getName());
}
eventList.add(newEvent);
}
Collections.sort(eventList, new Comparator<EventItem>() {
- public int compare(EventItem o1, EventItem o2) {
+ @Override
+ public int compare(EventItem o1, EventItem o2) {
return o1.compareTo(o2);
}
});
- for (Iterator<EventItem> iter = eventList.iterator(); iter.hasNext();)
- events.addItem(iter.next());
+ for (EventItem eventItem : eventList)
+ events.addItem(eventItem);
}
-
+
if (lastView != null) {
suspendSelection = false;
views.setSelectedItem(lastView);
switchView(lastView);
}
-
+
} catch (Exception e) {
Logger.error(e);
- JOptionPane.showMessageDialog(this,
- "The data structures of this item are incorrect.\nPlease contact your administrator.",
+ JOptionPane.showMessageDialog(this,
+ "The data structures of this item are incorrect.\nPlease contact your administrator.",
"Viewpoint Error" , JOptionPane.ERROR_MESSAGE);
}
suspendSelection = false;
}
-
+
public void switchView(Viewpoint newView) {
- for (Iterator iter = eventList.iterator(); iter.hasNext();) {
- EventItem thisEvent = (EventItem)iter.next();
+ for (EventItem thisEvent : eventList) {
if (thisEvent.eventId == newView.getEventId()) {
suspendSelection = true;
events.setSelectedItem(thisEvent);
@@ -270,7 +273,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
}
}
}
-
+
public void showEvent(EventItem thisEvent) {
eventDetails.setText(thisEvent.getEventDesc());
try {
@@ -278,13 +281,13 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
ClusterStorage.OUTCOME+"/"+currentSchema+"/"+thisEvent.schemaVersion+"/"+thisEvent.eventId));
} catch (Exception ex) {
Logger.error(ex);
- JOptionPane.showMessageDialog(this,
- "Could not retrieve requested outcome.\nPlease contact your administrator.",
+ JOptionPane.showMessageDialog(this,
+ "Could not retrieve requested outcome.\nPlease contact your administrator.",
"Viewpoint Error" , JOptionPane.ERROR_MESSAGE);
}
}
-
- public void setView(Outcome data) throws OutcomeException {
+
+ public void setView(Outcome data) {
Logger.msg(6, "ViewpointPane: got outcome type: "+data.getSchemaType()+" version: "+data.getSchemaVersion());
String schema;
currentOutcome = data;
@@ -295,7 +298,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
thisOutcome = EntityTabPane.getOutcomeHandler(data.getSchemaType(), data.getSchemaVersion());
thisOutcome.setDescription(schema);
thisOutcome.setOutcome(data.getData());
- thisOutcome.setReadOnly(true);
+ thisOutcome.setReadOnly(true);
Thread builder = new Thread(thisOutcome);
builder.start();
dataView.add(thisOutcome.getPanel());
@@ -308,21 +311,22 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
error = "Outcome was not valid. See log for details: "+ex.getMessage();
Logger.error(ex);
}
-
+
dataView.add(new JLabel(error));
}
-
+
public void clearView() {
dataView.removeAll();
exportButton.setEnabled(false);
if (viewButton!=null) viewButton.setEnabled(false);
}
-
- public void actionPerformed(ActionEvent e) {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("export") && currentOutcome != null)
saveOutcomeToFile();
if (e.getActionCommand().equals("setview") && currentOutcome != null)
- overrideView();
+ overrideView();
}
private void saveOutcomeToFile() {
@@ -333,7 +337,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
File targetFile = MainFrame.xmlChooser.getSelectedFile();
if (!(targetFile.getAbsolutePath().endsWith(".xml")))
targetFile = new File(targetFile.getAbsolutePath()+".xml");
-
+
Logger.msg(2, "ViewpointPane.actionPerformed() - Exporting outcome to file " + targetFile.getName());
try {
thisOutcome.export(targetFile);
@@ -343,28 +347,28 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
Logger.exceptionDialog(ex);
}
}
-
+
}
-
+
private void overrideView() {
Viewpoint oldView = (Viewpoint)views.getSelectedItem();
EventItem newEvent = (EventItem)events.getSelectedItem();
-
+
if (oldView.getEventId() == newEvent.eventId) {
- JOptionPane.showMessageDialog(this,
- "View '"+oldView.getName()+"' is already set to event "+newEvent.eventId,
+ JOptionPane.showMessageDialog(this,
+ "View '"+oldView.getName()+"' is already set to event "+newEvent.eventId,
"Viewpoint Already Set" , JOptionPane.ERROR_MESSAGE);
return;
}
-
- if (JOptionPane.showConfirmDialog(this,
+
+ if (JOptionPane.showConfirmDialog(this,
"Are you sure you want to set the '"+oldView.getName()+
- "' view to event " + newEvent.eventId+ "?",
- "Overwrite view",
+ "' view to event " + newEvent.eventId+ "?",
+ "Overwrite view",
JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
return;
-
+
oldView.setEventId(newEvent.eventId);
try {
String[] predefParams = new String[1];
@@ -373,17 +377,18 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
} catch (Exception e) {
Logger.error(e);
Logger.exceptionDialog(e);
- }
+ }
}
- public void add(C2KLocalObject contents) {
+ @Override
+ public void add(C2KLocalObject contents) {
if (contents instanceof Viewpoint)
addViewpoint((Viewpoint)contents);
else if (contents instanceof Outcome)
addOutcome((Outcome)contents);
}
-
+
public void addViewpoint(Viewpoint newView) {
String schemaName = newView.getSchemaName();
Logger.msg(3, "Viewpoint "+newView.getName()+" now points to "+newView.getEventId());
@@ -393,21 +398,19 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
return;
}
-
+
if (!(schemaName.equals(schemas.getSelectedItem())))
return;
-
- for (Iterator iter = eventList.iterator(); iter.hasNext();) {
- EventItem thisEvent = (EventItem)iter.next();
+
+ for (EventItem thisEvent : eventList) {
if (thisEvent.eventId == newView.getEventId())
thisEvent.addView(newView.getName());
else
thisEvent.removeView(newView.getName());
}
-
+
boolean isSelected = false;
- for (Iterator iter = viewpointList.iterator(); iter.hasNext();) {
- Viewpoint thisView = (Viewpoint)iter.next();
+ for (Viewpoint thisView : viewpointList) {
if (thisView.getName().equals(newView.getName())) {
isSelected = thisView.equals(views.getSelectedItem());
views.removeItem(thisView);
@@ -415,15 +418,15 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
break;
}
}
-
+
views.addItem(newView);
viewpointList.add(newView);
if (isSelected) {
views.setSelectedItem(newView);
}
-
+
}
-
+
public void addOutcome(Outcome contents) {
if (!(contents.getSchemaType().equals(currentSchema))) // not interested
return;
@@ -433,21 +436,22 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
events.addItem(newEvent);
}
- public void remove(String id) {
+ @Override
+ public void remove(String id) {
// we don't really remove viewpoints
}
-
- class EventItem implements Comparable {
+
+ class EventItem implements Comparable<Object> {
public int eventId;
public int schemaVersion;
public ArrayList<String> viewNames = new ArrayList<String>();
public String viewList = "";
-
+
public EventItem(int eventId, int schemaVersion) {
this.eventId = eventId;
this.schemaVersion = schemaVersion;
}
-
+
public void addView(String viewName) {
if (!(viewNames.contains(viewName))) {
viewNames.add(viewName);
@@ -459,29 +463,30 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
viewNames.remove(viewName);
buildViewLabel();
}
-
+
private void buildViewLabel() {
if (viewNames.size() == 0) {
viewList = "";
return;
}
-
+
StringBuffer newLabel = new StringBuffer(" (");
- for (Iterator iter = viewNames.iterator(); iter.hasNext();) {
- String viewName = (String)iter.next();
+ for (Iterator<String> iter = viewNames.iterator(); iter.hasNext();) {
+ String viewName = iter.next();
newLabel.append(viewName);
if (iter.hasNext())
newLabel.append(", ");
}
-
+
viewList = newLabel.append(")").toString();
}
-
- public String toString() {
+
+ @Override
+ public String toString() {
return eventId+viewList;
-
+
}
-
+
public String getEventDesc() {
try {
Event myEvent = (Event)sourceEntity.getEntity().getObject(ClusterStorage.HISTORY+"/"+eventId);
@@ -494,7 +499,8 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
}
}
- public int compareTo(Object o) {
+ @Override
+ public int compareTo(Object o) {
if (o instanceof EventItem) {
EventItem other = (EventItem)o;
if (other.eventId < eventId) return 1;
@@ -503,4 +509,10 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action
return 0;
}
}
+
+ @Override
+ public void control(String control, String msg) {
+ // TODO Auto-generated method stub
+
+ }
}