- Timestamp:
- 07/08/13 23:04:56 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/gui/ObjectPanel.java
r97 r98 12 12 13 13 import javax.swing.*; 14 import javax.swing.tree.TreePath; 14 15 15 16 import java.util.Collection; 16 import java.util. HashMap;17 import java.util.IdentityHashMap; 17 18 import java.util.Map; 18 19 import static com.framsticks.util.lang.Containers.filterInstanceof; 19 20 20 21 import com.framsticks.util.FramsticksException; 21 import com.framsticks.util.dispatching.RunAt;22 22 23 23 @SuppressWarnings("serial") 24 24 public class ObjectPanel extends ModifiablePanel implements ControlOwner { 25 25 26 private static final Logger log = Logger.getLogger(ObjectPanel.class .getName());26 private static final Logger log = Logger.getLogger(ObjectPanel.class); 27 27 28 final protected Map<Param, Control> components = new HashMap<Param, Control>();29 final protected Map<ValueParam, ValueControl> valueControls = new HashMap<ValueParam, ValueControl>();28 final protected Map<Param, Control> components = new IdentityHashMap<Param, Control>(); 29 final protected Map<ValueParam, ValueControl> valueControls = new IdentityHashMap<ValueParam, ValueControl>(); 30 30 31 31 public ObjectPanel(Panel.Parameters parameters, Collection<Param> params) { … … 37 37 for (final ValueControl c : filterInstanceof(components.values(), ValueControl.class)) { 38 38 valueControls.put(c.getParam(), c); 39 c.setUserEnabled(true); 39 40 c.setListener(new ValueControlListener() { 40 41 @Override 41 42 public boolean onChange(Object newValue) { 42 if (currentTree Node== null) {43 if (currentTreePath == null) { 43 44 return true; 44 45 } 45 boolean result = currentTreeNode.changeValue(c, newValue);46 boolean result = treeAtFrame.changeValue(currentTreePath, c, newValue); 46 47 refreshControlButtons(); 47 48 return result; … … 57 58 protected void applyChanges() { 58 59 assert frame.isActive(); 59 assert currentTree Node!= null;60 currentTreeNode.pushLocalChanges();60 assert currentTreePath != null; 61 treeAtFrame.pushLocalChanges(currentTreePath); 61 62 } 62 63 63 64 protected void refreshControlButtons() { 64 65 assert frame.isActive(); 65 applyButton.setEnabled( currentTreeNode.localChanges != null);66 applyButton.setEnabled(treeAtFrame.hasLocalChanges(currentTreePath)); 66 67 } 67 68 … … 71 72 @Override 72 73 public void pullValuesFromLocalToUser(AccessInterface access) { 73 assert currentTreeNode != null; 74 assert currentTreeNode.path.getTree().isActive(); 74 assert currentTreePath != null; 75 75 log.debug("refreshing components"); 76 76 77 final Map<ValueControl, Object> values = new HashMap<ValueControl, Object>();77 final Map<ValueControl, Object> values = new IdentityHashMap<ValueControl, Object>(); 78 78 for (Map.Entry<ValueParam, ValueControl> e : valueControls.entrySet()) { 79 79 values.put(e.getValue(), access.get(e.getKey().getId(), Object.class)); 80 80 } 81 81 82 frame.dispatch(new RunAt<Frame>(frame) { 83 @Override 84 protected void runAt() { 85 if (currentTreeNode.localChanges != null) { 86 for (Map.Entry<ValueControl, Object> e : currentTreeNode.localChanges.entrySet()) { 87 values.put(e.getKey(), e.getValue()); 88 } 89 } 90 for (Map.Entry<ValueControl, Object> e : values.entrySet()) { 91 e.getKey().pushValueToUserInterface(e.getValue()); 92 } 93 refreshControlButtons(); 94 ObjectPanel.this.revalidate(); 82 83 NodeAtFrame nodeAtFrame = treeAtFrame.getLocalInfo(currentTreePath); 84 if (nodeAtFrame != null) { 85 for (Map.Entry<ValueControl, Object> e : nodeAtFrame.localChanges.entrySet()) { 86 values.put(e.getKey(), e.getValue()); 95 87 } 96 }); 88 } 89 90 for (Map.Entry<ValueControl, Object> e : values.entrySet()) { 91 e.getKey().pushValueToUserInterface(e.getValue()); 92 } 93 refreshControlButtons(); 94 ObjectPanel.this.revalidate(); 97 95 98 96 } … … 109 107 110 108 @Override 111 public TreeNode getCurrentTreeNode() {112 return super.getCurrentTreeNode();113 }114 115 @Override116 109 public void handle(FramsticksException exception) { 117 110 frame.handle(exception); 118 111 } 119 112 120 // public void updateValue() { 121 // //assert panel.getFrame().isActive(); 113 @Override 114 public TreePath getCurrentTreePath() { 115 return super.getCurrentTreePath(); 116 } 122 117 123 // final Node n = panel.getCurrentNode();124 // panel.getBrowser().getManager().invokeLater(new Runnable() {125 // @Override126 // public void run() {127 // Object v = n.getAccess().get(param, Object.class);128 // if (v == null) {129 // v = param.getDef(Object.class);130 // }131 // final Object fv = v;132 // panel.getBrowser().invokeLater(new Runnable() {133 // @Override134 // public void run() {135 // setValueImpl(fv);136 // }137 // });138 // }139 // });140 // }141 118 142 119 }
Note: See TracChangeset
for help on using the changeset viewer.