import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.text.IDocument;\r
import org.eclipse.jface.text.TextViewer;\r
-import org.eclipse.jface.viewers.ViewerComparator;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.custom.StyledText;\r
import org.eclipse.swt.dnd.DND;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Control;\r
-import org.eclipse.swt.widgets.Display;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Menu;\r
import org.eclipse.ui.forms.IManagedForm;\r
private static final Logger logger = Logger.getLogger(GroupedComposite.class);\r
\r
protected TextViewer textViewer;\r
- protected TableWrapLayout layout;\r
private Label draggableLabel;\r
protected IManagedForm managedForm;\r
protected Taxon taxon;\r
\r
protected void createContent() {\r
setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
- layout = new TableWrapLayout();\r
+ TableWrapLayout layout = new TableWrapLayout();\r
layout.numColumns = 2;\r
layout.leftMargin = 0;\r
setLayout(layout);\r
* @param indent\r
*/\r
public void setIndent(int indent) {\r
- layout.leftMargin = indent;\r
- this.setLayout(layout);\r
+ if (getLayout() instanceof TableWrapLayout) {\r
+ TableWrapLayout layout = ((TableWrapLayout) getLayout());\r
+ layout.leftMargin = indent;\r
+ this.setLayout(layout);\r
+ } else {\r
+ logger.warn("Couldn't indent - composite's layout must be TableWrapLayout.");\r
+ }\r
} \r
\r
/* (non-Javadoc)\r
return focusListener;\r
}\r
\r
-// abstract protected Font getNameCompositeFont();\r
-\r
/* (non-Javadoc)\r
* @see org.eclipse.swt.widgets.Control#getMenu()\r
*/\r
- public Menu getMenu () {\r
- \r
- Menu menu = draggableLabel.getMenu();\r
- if (menu == null) {\r
- menu = new Menu(draggableLabel);\r
- draggableLabel.setMenu(menu);\r
- }\r
- return menu;\r
- }\r
+// public Menu getMenu () {\r
+// \r
+// Menu menu = draggableLabel.getMenu();\r
+// if (menu == null) {\r
+// menu = new Menu(draggableLabel);\r
+// draggableLabel.setMenu(menu);\r
+// }\r
+// return menu;\r
+// }\r
\r
/**\r
* \r
protected void setDirty(boolean isDirty) {\r
managedForm.dirtyStateChanged();\r
}\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.editor.name.GroupedComposite#dispose()\r
- */\r
- public void dispose () {\r
\r
- logger.warn("disposing");\r
- \r
- // Nullify decorator to stop its listener to listening for\r
- // composite focus\r
-// borderDecorator.dispose();\r
- \r
- if (dragSource != null) {\r
- dragSource.removeDragListener(dragSourceListener);\r
- }\r
- \r
- if (getFocusListener() != null && getTextViewer() != null \r
- && getTextViewer().getTextWidget() != null) {\r
- getTextViewer().getTextWidget().removeFocusListener(getFocusListener());\r
- getTextViewer().getTextWidget().removeFocusListener(borderDecorator);\r
- getTextViewer().getTextWidget().dispose();\r
- }\r
-\r
- super.dispose();\r
- }\r
- \r
/**\r
* Returns a <code>ContextMenu</code> opened by right-clicking on\r
* <code>draggableLabel</code>.\r
*/\r
protected ContextMenu createContextMenu() {\r
ContextMenu contextMenu = new ContextMenu(getDraggableLabel());\r
- if (getTextViewer() != null) {\r
- getTextViewer().getTextWidget().setMenu(contextMenu.getMenu());\r
- }\r
return contextMenu;\r
}\r
\r
draggableControl = control;\r
}\r
\r
- public void setDraggable(boolean draggable) {\r
+ public void setIsDraggable(boolean draggable) {\r
\r
if (draggable) {\r
\r
// ((DragSource) event.widget).dispose();\r
}\r
};\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.editor.name.GroupedComposite#dispose()\r
+ */\r
+ public void dispose () {\r
+ \r
+ logger.warn("disposing");\r
+ \r
+ // Nullify decorator to stop its listener to listening for\r
+ // composite focus\r
+// borderDecorator.dispose();\r
+ \r
+ if (dragSource != null) {\r
+ dragSource.removeDragListener(dragSourceListener);\r
+ }\r
+ \r
+ if (getFocusListener() != null && getTextViewer() != null \r
+ && getTextViewer().getTextWidget() != null) {\r
+ getTextViewer().getTextWidget().removeFocusListener(getFocusListener());\r
+ getTextViewer().getTextWidget().removeFocusListener(borderDecorator);\r
+ getTextViewer().getTextWidget().dispose();\r
+ }\r
+\r
+ super.dispose();\r
+ }\r
}
\ No newline at end of file
* @param transformation\r
*/\r
public void transform(String transformation) {\r
- setDraggable(true);\r
+ setIsDraggable(true);\r
setFont(ELEMENT_FONT);\r
setIcon(BLACK_SQUARE_ICON);\r
\r
}\r
\r
public void transform(String transformation) {\r
- setDraggable(false);\r
+ setIsDraggable(false);\r
setFont(DESCRIPTION_LABEL_FONT);\r
setIcon(DESCRIPTION_LABEL_ICON);\r
\r
import org.eclipse.ui.forms.IManagedForm;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
import eu.etaxonomy.taxeditor.actions.name.CreateMisappliedNameAction;\r
import eu.etaxonomy.taxeditor.actions.ui.ChangeTaxonToSynonymAction;\r
Taxon taxon) {\r
super(groupComposite, form, NameComposite.ACCEPTED_TAXON, taxon);\r
\r
- setDraggable(false);\r
+ setIsDraggable(false);\r
setIcon(ACCEPTED_ICON);\r
setFont(getViewerFont());\r
setIndent(ACCEPTED_INDENT);\r
this.relationshipType = relationshipType;\r
this.acceptedTaxonIsFromTaxon = acceptedTaxonIsFromTaxon;\r
\r
- setDraggable(true);\r
+ setIsDraggable(true);\r
setIcon(CONCEPT_ICON);\r
setFont(getViewerFont());\r
setIndent(CONCEPT_INDENT);\r
this.taxon = taxon;\r
this.misappliedName = misappliedName;\r
\r
- setDraggable(true);\r
+ setIsDraggable(true);\r
setIcon(MISAPPLIEDNAME_ICON);\r
setFont(getViewerFont());\r
setIndent(MISAPPLIEDNAME_INDENT);\r
import org.eclipse.core.commands.operations.IUndoableOperation;\r
import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.action.Action;\r
-import org.eclipse.swt.SWT;\r
import org.eclipse.swt.custom.StyledText;\r
-import org.eclipse.swt.events.DisposeEvent;\r
-import org.eclipse.swt.events.DisposeListener;\r
import org.eclipse.swt.events.FocusAdapter;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.events.KeyAdapter;\r
import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
+import org.eclipse.swt.graphics.Color;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.swt.layout.FillLayout;\r
-import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.ui.forms.IManagedForm;\r
import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.forms.widgets.TableWrapLayout;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.EditorController;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
import eu.etaxonomy.taxeditor.editor.LineBreakListener;\r
import eu.etaxonomy.taxeditor.editor.ParseListener;\r
createBorderSupport();\r
createLineWrapSupport();\r
\r
+ setDraggableControl(nameViewer.getRulerControl());\r
+ \r
// setData(taxonBase);\r
\r
createParser();\r
createNameListener(taxonBase.getName());\r
}\r
\r
+ protected void createContent() {\r
+ setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+ TableWrapLayout layout = new TableWrapLayout();\r
+ layout.leftMargin = 0;\r
+ setLayout(layout);\r
+ \r
+ Color groupBackgroundColor = TaxEditorPlugin.getDefault().\r
+ getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR);\r
+ setBackground(groupBackgroundColor);\r
+ }\r
+ \r
protected String getEmptyTextPrompt() {\r
return EMPTY_NAME_PROMPT;\r
}\r
\r
nameViewer.clearErrors();\r
\r
-// if (getData() instanceof TaxonBase) {\r
-// TaxonBase taxonBase = (TaxonBase) getData();\r
-// \r
-// TaxonNameBase name = taxonBase.getName();\r
-// nameViewer.setShowParsingError(name); \r
-// }\r
nameViewer.setShowParsingError(getName());\r
\r
}\r
\r
private NameViewer createNameViewer() {\r
\r
- viewerComposite = new Composite(this, SWT.NONE);\r
- viewerComposite.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.MIDDLE));\r
- viewerComposite.setLayout(new FillLayout());\r
+ nameViewer = new NameViewer(this);\r
\r
- nameViewer = new NameViewer(viewerComposite);\r
StyledText styledText = nameViewer.getTextWidget();\r
// nameViewer.setLineBreakListener(new LineBreakListener() {\r
\r
\r
\r
IUndoableOperation operation;\r
-\r
- private Composite viewerComposite;\r
\r
protected void setOperation(IUndoableOperation operation) {\r
this.operation = operation;\r
\r
public void createBorderSupport() {\r
super.createBorderSupport();\r
- if (viewerComposite != null) {\r
- borderDecorator.setBorderedComposite(viewerComposite);\r
+ if (nameViewer != null) {\r
+ borderDecorator.setBorderedComposite(nameViewer.getTextWidget());\r
}\r
}\r
\r
public void setIcon(Image icon) {\r
- super.setIcon(icon);\r
+// super.setIcon(icon);\r
if (nameViewer != null) {\r
nameViewer.setIcon(icon);\r
}\r
\r
return null;\r
}\r
+ \r
+ protected ContextMenu createContextMenu() {\r
+ if (nameViewer != null) {\r
+ ContextMenu contextMenu = new ContextMenu(nameViewer.getRulerControl());\r
+ nameViewer.getTextWidget().setMenu(contextMenu.getMenu());\r
+ return contextMenu;\r
+ } else {\r
+ logger.warn("Can't create menu because nameViewer has not been initalized.");\r
+ return null;\r
+ }\r
+ }\r
}
\ No newline at end of file
import org.eclipse.swt.graphics.Color;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.layout.GridLayout;\r
import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
import org.eclipse.swt.widgets.Display;\r
import org.eclipse.swt.widgets.Layout;\r
import org.eclipse.ui.IActionBars;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.actions.ActionFactory;\r
+import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.forms.widgets.TableWrapLayout;\r
import org.eclipse.ui.operations.OperationHistoryActionHandler;\r
import org.eclipse.ui.operations.RedoActionHandler;\r
import org.eclipse.ui.operations.UndoActionHandler;\r
private static final Logger logger = Logger\r
.getLogger(NameViewer.class);\r
\r
+ /**\r
+ * Uses the viewer's StyledText widget to compute its height. \r
+ */\r
class RulerLayoutExtension extends RulerLayout {\r
RulerLayoutExtension(int gap) {\r
super(gap);\r
// Set background color of ruler\r
ruler.getControl().setBackground(TaxEditorPlugin.getDefault().\r
getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));\r
- ruler.getControl().setBackgroundImage(TaxEditorPlugin.getDefault().\r
- getImage(ITaxEditorConstants.EDIT_BITMAP_ICON));\r
-// ruler.setModel(annotationModel); // TODO confirm this is really unnecessary \r
\r
-\r
- // Lay out StyledText\r
-// StyledText textWidget = this.getTextWidget();\r
-// textWidget.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+ // Set background color of strip between ruler and textWidget\r
+ getTextWidget().getParent().setBackground(TaxEditorPlugin.getDefault().\r
+ getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR)); \r
+ \r
+ // Lay out the text widget\r
+ getTextWidget().getParent().setLayoutData(\r
+ new TableWrapData (TableWrapData.FILL_GRAB, TableWrapData.MIDDLE));\r
+ \r
+ TableWrapLayout widgetLayout = new TableWrapLayout();\r
+ widgetLayout.bottomMargin = 10; // Does nothing\r
+ getTextWidget().setLayout(widgetLayout);\r
+ \r
+ // This does crazy shit!\r
+// TableWrapLayout widgetLayout2 = new TableWrapLayout();\r
+// widgetLayout2.bottomMargin = 10;\r
+// getTextWidget().getParent().setLayout(widgetLayout2);\r
\r
createAnnotationPainter();\r
\r
\r
\r
}\r
+ \r
+ public Control getRulerControl() {\r
+ return ruler.getControl();\r
+ }\r
\r
public void setIcon(Image icon) {\r
if (ruler instanceof RulerWithIcon) {\r
\r
this.undoContext = EditorController.getUndoContext(taxon);\r
\r
- setDraggable(true);\r
+ setIsDraggable(true);\r
setFont(getViewerFont());\r
setIndent(SYNONYM_INDENT);\r
\r