this.noun = " " + noun.trim();\r
}\r
\r
- protected void objectAdded(OBJECT o){}\r
+ protected boolean has(OBJECT o){\r
+ return objectToEditor.containsKey(o);\r
+ }\r
+ \r
+ protected void objectAdded(OBJECT o, EDITOR e){}\r
\r
- protected void objectRemoved(OBJECT o){}\r
+ protected void objectRemoved(OBJECT o, EDITOR e){}\r
\r
protected final void addCreator(ObjectCreator c){\r
creators.add(c);\r
private void menuNew(ObjectCreator c){\r
add(c.newObject());\r
}\r
- \r
+\r
@SuppressWarnings("unchecked")\r
- public EDITOR getSelectedEditor(){\r
- try {\r
- return (EDITOR)super.getSelectedComponent();\r
- } catch ( ClassCastException e ){\r
- return null;\r
- }\r
+ public EDITOR getSelectedEditor() {\r
+ EDITOR e = (EDITOR) super.getSelectedComponent();\r
+ if (editorToObject.containsKey(e))\r
+ return e;\r
+ return null;\r
}\r
- \r
+\r
private void close(){\r
EDITOR e = getSelectedEditor();\r
+ if ( e == null )\r
+ return;\r
OBJECT o = editorToObject.get(e);\r
File f = editorToFile.get(e);\r
\r
editorToObject.remove(e);\r
fileToEditor.remove(f);\r
editorToFile.remove(e);\r
- objectRemoved(o);\r
+ objectRemoved(o, e);\r
remove(e);\r
}\r
\r
private void saveDialog(){\r
EDITOR e = getSelectedEditor();\r
+ if ( e == null )\r
+ return;\r
if ( !editorToFile.containsKey(e) ){\r
log.debug("Editor has no file, saving as...");\r
saveAsDialog();\r
}\r
private void saveAsDialog(){\r
EDITOR e = getSelectedEditor();\r
+ if ( e == null )\r
+ return;\r
final FileDialog fd = new FileDialog(frame, "Save" + noun + " As", FileDialog.SAVE);\r
fd.setVisible(true);\r
if (fd.getFile() != null ) {\r
fileToEditor.put(file, e);\r
editorToFile.put(e, file);\r
addTab(file.getName(), e); \r
- objectAdded(o);\r
+ objectAdded(o, e);\r
} catch (Exception e) {\r
errorDialog(e);\r
}\r
editorToObject.put(e, o);\r
addTab("new", e);\r
dirty(o);\r
- objectAdded(o);\r
+ objectAdded(o, e);\r
+ }\r
+ \r
+ protected final void add(final OBJECT o, final File f){\r
+ EDITOR e = createEditor(o);\r
+ objectToEditor.put(o, e);\r
+ editorToObject.put(e, o);\r
+ fileToEditor.put(f, e);\r
+ editorToFile.put(e, f);\r
+ addTab(f.getName(), e);\r
+ objectAdded(o, e);\r
}\r
\r
public final void load(final File f) throws IOException{\r
fileToEditor.put(f, e);\r
editorToFile.put(e, f);\r
addTab(f.getName(), e);\r
- objectAdded(o);\r
+ objectAdded(o, e);\r
}\r
\r
public abstract EDITOR createEditor(final OBJECT o);\r