package org.insightech.er.editor.controller.editpart.element.connection;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.editparts.AbstractConnectionEditPart;
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.ERModelUtil;
import org.insightech.er.editor.model.diagram_contents.element.connection.ConnectionElement;
import org.insightech.er.editor.model.diagram_contents.element.node.NodeElement;
import org.insightech.er.editor.model.diagram_contents.element.node.category.Category;
import org.insightech.er.editor.model.settings.CategorySetting;
public abstract class ERDiagramConnectionEditPart extends
AbstractConnectionEditPart implements PropertyChangeListener {
private static Logger logger = Logger
.getLogger(ERDiagramConnectionEditPart.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();
}
public void propertyChange(PropertyChangeEvent event) {
try {
if (DEBUG) {
logger.log(Level.INFO, this.getClass().getName() + ":"
+ event.getPropertyName() + ":" + event.toString());
}
if (event.getPropertyName().equals(
ConnectionElement.PROPERTY_CHANGE_BEND_POINT)) {
this.refreshBendpoints();
} else if (event.getPropertyName().equals(
ConnectionElement.PROPERTY_CHANGE_CONNECTION_ATTRIBUTE)) {
this.refreshVisuals();
}
} catch (Exception e) {
Activator.showExceptionDialog(e);
}
}
protected ERDiagram getDiagram() {
return ERModelUtil.getDiagram(this.getRoot().getContents());
}
protected Category getCurrentCategory() {
return this.getDiagram().getCurrentCategory();
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshVisuals() {
EditPart sourceEditPart = this.getSource();
EditPart targetEditPart = this.getTarget();
ERDiagram diagram = this.getDiagram();
if (diagram != null) {
this.figure.setVisible(false);
// Category category = this.getCurrentCategory();
//
// if (category != null) {
// CategorySetting categorySettings = this.getDiagram()
// .getDiagramContents().getSettings()
// .getCategorySetting();
//
// if (sourceEditPart != null && targetEditPart != null) {
// NodeElement sourceModel = (NodeElement) sourceEditPart
// .getModel();
// NodeElement targetModel = (NodeElement) targetEditPart
// .getModel();
//
// boolean containsSource = false;
//
// if (category.contains(sourceModel)) {
// containsSource = true;
//
// } else if (categorySettings.isShowReferredTables()) {
// for (NodeElement referringElement : sourceModel
// .getReferringElementList()) {
// if (category.contains(referringElement)) {
// containsSource = true;
// break;
// }
// }
// }
//
// if (containsSource) {
// if (category.contains(targetModel)) {
// this.figure.setVisible(true);
//
// } else if (categorySettings.isShowReferredTables()) {
// for (NodeElement referringElement : targetModel
// .getReferringElementList()) {
// if (category.contains(referringElement)) {
// this.figure.setVisible(true);
// break;
// }
// }
// }
// }
// }
//
// } else {
this.figure.setVisible(true);
// }
}
}
abstract protected void refreshBendpoints();
}