package org.insightech.er.editor.controller.editpart.element.node; import java.beans.PropertyChangeEvent; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.RequestConstants; import org.insightech.er.editor.controller.editpolicy.element.node.NodeElementComponentEditPolicy; import org.insightech.er.editor.controller.editpolicy.element.node.note.NoteDirectEditPolicy; import org.insightech.er.editor.model.diagram_contents.element.node.note.Note; import org.insightech.er.editor.view.editmanager.NoteCellEditor; import org.insightech.er.editor.view.editmanager.NoteEditManager; import org.insightech.er.editor.view.editmanager.NoteEditorLocator; import org.insightech.er.editor.view.figure.NoteFigure; public class NoteEditPart extends NodeElementEditPart implements IResizable { private NoteEditManager editManager = null; /** * {@inheritDoc} */ @Override protected IFigure createFigure() { NoteFigure noteFigure = new NoteFigure(); this.changeFont(noteFigure); return noteFigure; } /** * {@inheritDoc} */ @Override public void doPropertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals(Note.PROPERTY_CHANGE_NOTE)) { refreshVisuals(); } super.doPropertyChange(event); } /** * {@inheritDoc} */ @Override protected void createEditPolicies() { this.installEditPolicy(EditPolicy.COMPONENT_ROLE, new NodeElementComponentEditPolicy()); this.installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NoteDirectEditPolicy()); super.createEditPolicies(); } /** * {@inheritDoc} */ @Override public void refreshVisuals() { Note note = (Note) this.getModel(); NoteFigure figure = (NoteFigure) this.getFigure(); figure.setText(note.getText(), note.getColor()); super.refreshVisuals(); } /** * {@inheritDoc} */ @Override public void performRequest(Request request) { if (request.getType().equals(RequestConstants.REQ_DIRECT_EDIT) || request.getType().equals(RequestConstants.REQ_OPEN)) { performDirectEdit(); } } private void performDirectEdit() { if (this.editManager == null) { this.editManager = new NoteEditManager(this, NoteCellEditor.class, new NoteEditorLocator(getFigure())); } this.editManager.show(); } @Override protected void performRequestOpen() { } }