summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/gui/tabs/ViewpointPane.java
diff options
context:
space:
mode:
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
+
+ }
}