package org.insightech.er.editor.controller.editpart.element;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.insightech.er.Activator;
import org.insightech.er.editor.model.AbstractModel;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.element.node.category.Category;
import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModel;
public abstract class AbstractModelEditPart extends AbstractGraphicalEditPart
implements PropertyChangeListener {
private static Logger logger = Logger.getLogger(AbstractModelEditPart.class
.getName());
private static final boolean DEBUG = false;
/**
* {@inheritDoc}
*/
@Override
public void activate() {
super.activate();
AbstractModel model = (AbstractModel) this.getModel();
model.addPropertyChangeListener(this);
}
/**
* {@inheritDoc}
*/
@Override
public void deactivate() {
AbstractModel model = (AbstractModel) this.getModel();
model.removePropertyChangeListener(this);
super.deactivate();
}
protected ERDiagram getDiagram() {
Object model = this.getRoot().getContents().getModel();
if (model instanceof ERModel) {
return ((ERModel)model).getDiagram();
}
return (ERDiagram) model;
}
protected Category getCurrentCategory() {
return this.getDiagram().getCurrentCategory();
}
protected void executeCommand(Command command) {
this.getViewer().getEditDomain().getCommandStack().execute(command);
}
public final void propertyChange(PropertyChangeEvent event) {
try {
if (DEBUG) {
logger.log(Level.INFO, this.getClass().getName() + ":"
+ event.getPropertyName() + ":" + event.toString());
}
this.doPropertyChange(event);
} catch (Exception e) {
Activator.showExceptionDialog(e);
}
}
protected void doPropertyChange(PropertyChangeEvent event) {
}
}