Updated 20-Oct-2013
============================================================
In the editor, after deleting a cable waypoint the selection marker may still show the old trajectory  



In the editor editing code on several components may bring up the wrong code, that is, the code associated to a component edited earlier.




Address-out-of-bound in a simulated component completely crashes
SIM-PL. That may be a little too harsh. Handle errors in Wisent
execution more gracefully.

Add "Fit width, Fit height, Fit page" zoom options to component panels.

Double click on text form should bring up the editor.

For one reason or another, when I start the Executer or Editor the window appears first in stacking order, but behind other windows on my desktop. Wazaap?

Highlights: ensure that all component access is read-allowed and read-only


Wisent: Statements that involve expressions should check L-value/R-value.


Evaluating a highlight on a complex component crashes SIM-PL with this backtrace:

util.ExceptionHandler: Error: condition should not have occurred: Unimplemented method
        at executer.Simulator$Instance_Complex.getType(Simulator.java:420)
        at compiler.wasm.HighlightDef.<init>(HighlightDef.java:69)
        at compiler.wasm.Pass3.highlight(Pass3.java:724)
        at compiler.wasm.Pass3.highlight_declaration(Pass3.java:472)
        at compiler.wasm.Pass3.processor(Pass3.java:132)
        at compiler.wasm.Pass3.program(Pass3.java:53)
        at compiler.wasm.WASM.compilePreprocess(WASM.java:168)
        at compiler.wasm.WASM.compile(WASM.java:241)
        at executer.programeditor.ProgramEditorDialog2.compile(ProgramEditorDialog2.java:713)
        at executer.programeditor.ProgramEditorDialog2$13.actionPerformed(ProgramEditorDialog2.java:431)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2713)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
        at java.awt.EventQueue.access$200(EventQueue.java:100)
        at java.awt.EventQueue$3.run(EventQueue.java:676)
        at java.awt.EventQueue$3.run(EventQueue.java:674)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:690)
        at java.awt.EventQueue$4.run(EventQueue.java:688)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)




Opening a componentin the editor with a nested subcomponent in it with errors crashes SIM-PL with this backtrace:

java.lang.Exception: subcomponent PCandLive has errors
        at databinding.Complex.compile(Complex.java:195)
        at databinding.Complex.compile(Complex.java:79)
        at namespace.ComponentNamespace.compile(ComponentNamespace.java:184)
        at editor.DocumentContext.recompile(DocumentContext.java:136)
        at editor.EditorDocumentContext.recompile(EditorDocumentContext.java:166)
        at editor.EditorDocumentContext$2.editOccured(EditorDocumentContext.java:273)
        at editor.EditorDocumentContext$1.dispatchEvent(EditorDocumentContext.java:219)
        at editor.EditorDocumentContext$1.dispatchEvent(EditorDocumentContext.java:217)
        at editor.EventDispatchManager.fireEvent(EventDispatchManager.java:68)
        at editor.EditorDocumentContext.doEdit(EditorDocumentContext.java:334)
        at editor.EditorDocumentContext.addNodeUndoable(EditorDocumentContext.java:341)
        at editor.tool.SubComponentTool$SubComponentLockedState.release(SubComponentTool.java:198)
        at editor.tool.Tool.mouseReleased(Tool.java:302)
        at editor.ComponentPanel.mouseReleased(ComponentPanel.java:366)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2713)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
        at java.awt.EventQueue.access$200(EventQueue.java:100)
        at java.awt.EventQueue$3.run(EventQueue.java:676)
        at java.awt.EventQueue$3.run(EventQueue.java:674)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:690)
        at java.awt.EventQueue$4.run(EventQueue.java:688)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)



When clicking a wire on a pin with the wire tool, we get this:
Spurious drag ignored in state editor.tool.WireTool$CableDefaultState@72898110of tool editor.tool.WireTool$CableDefaultState@72898110
Spurious release ignored in state editor.tool.WireTool$CableDefaultState@72898110of tool editor.tool.WireTool$CableDefaultState@72898110



Setting, editing and unsetting of subcomponent parameters.

Zoom in the component panels should be centered at the mouse cursor. Now the top-left spot stays put.

Continue loading in the executer when the layout can not be restored.


- "Open in de Ander" optie in Executer/Editor
- Executer file-time checks + reload popup
- ProgramEditor file-time checks + reload popup

- Project encapsulatie???

- Foutmeldingen van de compiler.

- Cycle counter ergens prominent.

- Breakpoints in de Executer

- Hilights in de pipeline.

- Serialisatie van de Executer layout.

- Copy/paste in editor

- Should probes be put in the worksheet? They really are about execution feedback, not about the components themselves. In the Executer they could be dynamically placed.


- It is not strictly necessary to have the tree view correspond 1-1 to the XML.
  In particular, the presentation of the wire graph in tree form is not useful.
  Make the tree view (and also the render view selection) correspond to the user-friendly concepts.

- While at it, find a nice way to declare what moves when we drag a bunch of slected objects.

- Make the redraw notification more transparent (ideally completely automatic), by putting dependencies of objects on fields of other objects in the object graph (in terms of listeners receiving change notifications)

- Preview components in file dialogs


- Work around GraphicsEnvironment issues (multiple monitors)
- First entry and subsequent editing of internals (code) differ. Make this work the same way.
- Make shortcut keys work in their ExecuterDialog, not always in the main window.


Exception in thread "AWT-EventQueue-0" java.lang.Error: not available
        at editor.tool.Tool$AbortedState.move(Tool.java:758)
        at editor.tool.Tool.mouseMoved(Tool.java:227)
        at editor.ComponentPanel.mouseMoved(ComponentPanel.java:276)
        at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:312)
        at java.awt.Component.processMouseMotionEvent(Component.java:6086)
        at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3283)
        at java.awt.Component.processEvent(Component.java:5810)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3999)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)




- Improve render speed in both Editor and Executer.
  Especially in the Editor, this could potentially
  lower system requirements dramatically

- Being able to detach wires, and reattach them to 
  other pins. This is especially nice for wires that
  have become dangling because a subcomponent changed.
  Currently, thes wires can only be extended (using a 
  split) to a new pin, after which the dangling end must
  be removed by hand.

- Better handling of transparency.

- Provide a modal progress monitor (with Cancel button) for 
  the 'cycles ...' operation


- Implement a C compiler

- Support use of external program code editors

- Shorten distance between editor/executer (single app?)
  for faster design/test cycle

- Allow _?_:_ operator in Wisent
  Even better: support as much C as possible. This may be useful: 
  http://antlr.org/grammar/1153358328744/C.g

- Automatically compute minimum delay time for complex components (in Editor?)

- make EPS dpi configurable

- allow PNG pre-schaling to have a more precise PNG

- allow form objects to express position relative to some other object
  (say a text object wants the same PosY as an input or something