\r
protected TaxonNameEditor editor;\r
\r
- protected NameViewer textViewer;\r
+ protected NameViewer nameViewer;\r
\r
private AbstractGroup<T> group;\r
\r
this.group = group; \r
group.add(this);\r
\r
- setData( (T) HibernateProxyHelper.deproxy(taxonBase));\r
+ setData(taxonBase);\r
\r
createControl();\r
\r
\r
setMenu(editor.getMenu());\r
\r
- setDraggableControl(textViewer.getRulerControl());\r
+ setDraggableControl(new Control[]{getControl(), getNameViewer().getRulerControl()});\r
\r
createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
\r
- parseHandler = ParseHandler.NewInstance(textViewer.getTextWidget(), taxonBase.getName());\r
+ parseHandler = ParseHandler.NewInstance(getNameViewer().getTextWidget(), taxonBase.getName());\r
\r
initializeComposite();\r
\r
}\r
\r
private void addListener(){\r
- textViewer.getTextWidget().addModifyListener(nameCompositeModifyListener);\r
- textViewer.getTextWidget().addFocusListener(nameCompositeFocusListener);\r
+ getNameViewer().getTextWidget().addModifyListener(nameCompositeModifyListener);\r
+ getNameViewer().getTextWidget().addFocusListener(nameCompositeFocusListener);\r
}\r
\r
private void removeListener(){\r
- textViewer.getTextWidget().removeModifyListener(nameCompositeModifyListener);\r
- textViewer.getTextWidget().removeFocusListener(nameCompositeFocusListener);\r
+ getNameViewer().getTextWidget().removeModifyListener(nameCompositeModifyListener);\r
+ getNameViewer().getTextWidget().removeFocusListener(nameCompositeFocusListener);\r
}\r
\r
/**\r
if (text.length() == 0) {\r
initEmptyText();\r
} else {\r
- textViewer.setText(text);\r
+ getNameViewer().setText(text);\r
placeCursor();\r
}\r
calculateErrors();\r
}\r
\r
synchronized protected void calculateErrors() {\r
- textViewer.clearErrors();\r
- textViewer.setShowParsingErrors(getName());\r
+ getNameViewer().clearErrors();\r
+ getNameViewer().setShowParsingErrors(getName());\r
}\r
\r
protected void handleSplitText(String text) {\r
initEmptyText();\r
} else {\r
removeListener();\r
- textViewer.getTextWidget().setText(text);\r
+ getNameViewer().getTextWidget().setText(text);\r
addListener();\r
}\r
\r
if (freetextEditingAllowed()) {\r
\r
// set editable\r
- textViewer.getTextWidget().setEditable(true);\r
+ getNameViewer().getTextWidget().setEditable(true);\r
\r
// restore foreground font color again\r
- textViewer.getTextWidget().setForeground(control.getForeground());\r
+ getNameViewer().getTextWidget().setForeground(control.getForeground());\r
} else {\r
// set non-editable\r
- textViewer.getTextWidget().setEditable(false);\r
+ getNameViewer().getTextWidget().setEditable(false);\r
\r
// grey out text as a non-editable indicator\r
- textViewer.getTextWidget().setForeground(not_editable_color);\r
+ getNameViewer().getTextWidget().setForeground(not_editable_color);\r
}\r
}\r
\r
\r
public void persistName(){\r
if(isDirty()){\r
- logger.warn("Found dirty composite: " + this + ". Name: " + textViewer.getTextWidget().getText());\r
+ logger.warn("Found dirty composite: " + this + ". Name: " + getNameViewer().getTextWidget().getText());\r
getTaxonBase().setName(parseHandler.parseAndResolveDuplicates());\r
\r
getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));\r
\r
control.setLayout(layout);\r
\r
- setBackground(EditorUtil.getColor(Resources.COLOR_COMPOSITE_BACKGROUND));\r
}\r
\r
public Composite getControl(){\r
}\r
\r
protected void createLineWrapSupport() {\r
- if (textViewer instanceof NameViewer) {\r
- new LineWrapSupport(textViewer, editor.getManagedForm());\r
- } else {\r
- logger.warn("Can't create line wrap support because textViewer has not been initialized.");\r
- }\r
+ new LineWrapSupport(getNameViewer(), editor.getManagedForm());\r
}\r
\r
\r
protected void createTextViewer() {\r
- textViewer = new NameViewer(control);\r
+ nameViewer = new NameViewer(control);\r
\r
focusListener = new FocusAdapter() {\r
public void focusGained(FocusEvent e) {\r
container.colorSelected(NOT_SELECTED);\r
}\r
editor.getManagedForm().setInput(AbstractGroupedContainer.this);\r
-// setSelected();\r
placeCursor();\r
colorSelected(SELECTED_FOCUS);\r
- logger.warn("TextViewer gained focus: " + AbstractGroupedContainer.this);\r
}\r
- public void focusLost(FocusEvent e) {\r
-// colorSelected(NOT_SELECTED);\r
- logger.warn("TextViewer lost focus: " + AbstractGroupedContainer.this);\r
- logger.warn("------------");\r
- };\r
};\r
- textViewer.getTextWidget().addFocusListener(focusListener);\r
+ nameViewer.getTextWidget().addFocusListener(focusListener);\r
\r
// \r
MouseAdapter mouseListener = new MouseAdapter() {\r
public void mouseDown(MouseEvent e) {\r
storeCursor();\r
-// setFocus(); \r
- \r
-// logger.warn("mouseDown");\r
-// logger.warn(textViewer.getCursorPosition());\r
}\r
};\r
control.addMouseListener(mouseListener);\r
- textViewer.getRulerControl().addMouseListener(mouseListener);\r
- textViewer.getTextWidget().addMouseListener(mouseListener);\r
+ nameViewer.getRulerControl().addMouseListener(mouseListener);\r
+ nameViewer.getTextWidget().addMouseListener(mouseListener);\r
}\r
\r
/**\r
* @param icon\r
*/\r
public void setIcon(Image icon) {\r
- if (textViewer instanceof NameViewer) {\r
- textViewer.setIcon(icon);\r
- } else {\r
- logger.warn("Can't set icon because textViewer has not been initialized.");\r
- }\r
+ getNameViewer().setIcon(icon);\r
}\r
\r
/**\r
* @return\r
*/\r
public void setSelected() {\r
- textViewer.getTextWidget().setFocus();\r
+ getNameViewer().getTextWidget().setFocus();\r
}\r
\r
public boolean isSelected(){\r
child.setBackground(color);\r
}\r
\r
- if(textViewer != null){\r
- textViewer.setBackground(color);\r
- }\r
+ getNameViewer().setBackground(color);\r
}\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.swt.widgets.Control#setFont(org.eclipse.swt.graphics.Font)\r
*/\r
public void setFont(Font font) {\r
- if (textViewer != null) {\r
- textViewer.getTextWidget().setFont(font);\r
- } else {\r
- logger.warn("Can't set font because textViewer has not been initalized.");\r
- }\r
+ getNameViewer().getTextWidget().setFont(font);\r
}\r
\r
- public TextViewer getTextViewer() {\r
- return textViewer;\r
+ public NameViewer getNameViewer() {\r
+ if (nameViewer == null){\r
+ throw new RuntimeException("The Name Viewer is corrupt for Name Container: " + getTaxonBase().getName().getTitleCache());\r
+ }\r
+ return nameViewer;\r
}\r
\r
/**\r
*/\r
public void createEmptyViewerPrompt(final String prompt) {\r
\r
- Assert.isNotNull(textViewer);\r
+ Assert.isNotNull(getNameViewer());\r
\r
- final StyledText textControl = textViewer.getTextWidget();\r
- final IDocument document = textViewer.getDocument();\r
+ final StyledText textControl = getNameViewer().getTextWidget();\r
+ final IDocument document = getNameViewer().getDocument();\r
\r
setFocusListener(new FocusListener() {\r
\r
\r
protected void initEmptyText() {\r
Font defaultFont = EditorUtil.getFont(Resources.FONT_DEFAULT_PROMPT);\r
- textViewer.getTextWidget().setFont(defaultFont);\r
+ getNameViewer().getTextWidget().setFont(defaultFont);\r
\r
- textViewer.getDocument().set(getEmptyTextPrompt());\r
+ getNameViewer().getDocument().set(getEmptyTextPrompt());\r
placeCursor();\r
}\r
\r
public void setMenu (Menu menu) {\r
control.setMenu(menu);\r
\r
- if (textViewer != null) {\r
- textViewer.setMenu(menu);\r
- }\r
+ getNameViewer().setMenu(menu);\r
}\r
\r
- private Control draggableControl;\r
- private DragSource dragSource;\r
+ private Control[] draggableControls;\r
\r
- protected void setDraggableControl(Control control) {\r
- draggableControl = control;\r
- }\r
-\r
- public DragSource getDragSource() {\r
- return dragSource;\r
+ protected void setDraggableControl(Control[] controls) {\r
+ draggableControls = controls;\r
}\r
\r
public void setIsDraggable(boolean draggable) {\r
\r
if (draggable) {\r
\r
- if (dragSource != null) {\r
- // Already initialized\r
- return;\r
- }\r
-\r
- if (draggableControl == null) {\r
+ if (draggableControls == null) {\r
throw new NullPointerException(\r
- "Draggable control must be set to add draggability");\r
+ "Draggable controls must be set to add draggability");\r
}\r
\r
Transfer[] types = new Transfer[] { CdmDataTransfer.getInstance() }; \r
int operations = DND.DROP_MOVE;\r
\r
- dragSource = new DragSource(draggableControl, operations);\r
- dragSource.setTransfer(types);\r
- \r
- dragSource.addDragListener(new NameEditorDragListener(this));\r
- dragSource.setDragSourceEffect(new NameEditorDragSourceEffect(control));\r
- } else {\r
- dragSource = null;\r
- }\r
+ for(Control draggableControl : draggableControls){\r
+ DragSource dragSource = new DragSource(draggableControl, operations);\r
+ dragSource.setTransfer(types);\r
+ \r
+ dragSource.addDragListener(new NameEditorDragListener(this));\r
+ dragSource.setDragSourceEffect(new NameEditorDragSourceEffect(control));\r
+ }\r
+ } \r
}\r
\r
private String nonEditableText;\r
nonEditableInfoLabel = editor.getToolkit().createLabel(control, "");\r
TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP);\r
// Set indent to viewer ruler's width \r
- if (textViewer != null && textViewer.getRulerControl() != null) {\r
+ if (getNameViewer().getRulerControl() != null) {\r
// TODO right justify\r
layoutData.indent = NameViewer.RULER_WIDTH;\r
}\r
}\r
\r
public void setData(T data){\r
- this.data = data;\r
+ this.data = (T) HibernateProxyHelper.deproxy(data);\r
}\r
\r
/**\r
* the method handleSplitText().\r
*/\r
protected void createLineBreakListener() {\r
- if (textViewer != null) {\r
- lineBreakListener = new LineBreakListener() {\r
- @Override\r
- public void handleSplitText(String text) {\r
- AbstractGroupedContainer.this.handleSplitText(text); \r
- }\r
- };\r
- \r
- textViewer.getTextWidget().addVerifyListener(lineBreakListener);\r
- textViewer.getTextWidget().addKeyListener(lineBreakListener);\r
- } else {\r
- logger.warn("Can't create line break listener because textViewer has not been initalized.");\r
- }\r
+ lineBreakListener = new LineBreakListener() {\r
+ @Override\r
+ public void handleSplitText(String text) {\r
+ AbstractGroupedContainer.this.handleSplitText(text); \r
+ }\r
+ };\r
+ \r
+ getNameViewer().getTextWidget().addVerifyListener(lineBreakListener);\r
+ getNameViewer().getTextWidget().addKeyListener(lineBreakListener);\r
}\r
\r
abstract class LabelEllipsisListener extends ControlAdapter {\r
}\r
\r
public void storeCursor() {\r
- this.cursorPosition = textViewer.getCursorPosition();\r
+ this.cursorPosition = getNameViewer().getCursorPosition();\r
}\r
\r
/**\r
*/\r
public void placeCursor(){\r
if(cursorPosition == 0){\r
- textViewer.setCursorToEOL();\r
+ getNameViewer().setCursorToEOL();\r
}else{\r
- textViewer.setCursorPosition(cursorPosition);\r
+ getNameViewer().setCursorPosition(cursorPosition);\r
}\r
}\r
\r