From 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 Mon Sep 17 00:00:00 2001 From: abranson Date: Thu, 4 Aug 2011 00:42:34 +0200 Subject: 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 --- source/com/c2kernel/gui/tabs/ViewpointPane.java | 202 +++++++++++++----------- 1 file changed, 107 insertions(+), 95 deletions(-) (limited to 'source/com/c2kernel/gui/tabs/ViewpointPane.java') 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 { + JComboBox schemas; JComboBox views; JComboBox events; JLabel eventDetails; JButton exportButton; JButton viewButton; - + ArrayList schemaList; ArrayList viewpointList; ArrayList 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(this, ClusterStorage.VIEWPOINT, false)); + sourceEntity.getEntity().subscribe(new MemberSubscription(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(); eventList = new ArrayList(); 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() { - public int compare(EventItem o1, EventItem o2) { + @Override + public int compare(EventItem o1, EventItem o2) { return o1.compareTo(o2); } }); - for (Iterator 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 { public int eventId; public int schemaVersion; public ArrayList viewNames = new ArrayList(); 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 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 + + } } -- cgit v1.2.3