/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Created on Jul 15, 2004 */ package org.jkiss.dbeaver.ext.erd.part; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.editparts.AbstractConnectionEditPart; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.ext.erd.model.ERDObject; import org.jkiss.dbeaver.model.DBPNamedObject; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; /** * An ConnectionEditPart base class which is property aware, that is, can handle property change notification events * All our ConnectionEditPart are subclasses of this * @author Serge Rider */ public abstract class PropertyAwareConnectionPart extends AbstractConnectionEditPart implements PropertyChangeListener, DBPNamedObject { @NotNull @Override public String getName() { return ((ERDObject)getModel()).getName(); } protected boolean isEditEnabled() { return getRoot().getContents() instanceof DiagramPart && ((DiagramPart) getRoot().getContents()).getDiagram().isLayoutManualAllowed(); } /** * @see org.eclipse.gef.EditPart#activate() */ @Override public void activate() { super.activate(); ERDObject<?> erdObject = (ERDObject<?>) getModel(); erdObject.addPropertyChangeListener(this); } /** * @see org.eclipse.gef.EditPart#deactivate() */ @Override public void deactivate() { super.deactivate(); ERDObject<?> erdObject = (ERDObject<?>) getModel(); erdObject.removePropertyChangeListener(this); } /** * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) */ @Override public void propertyChange(PropertyChangeEvent evt) { String property = evt.getPropertyName(); if (ERDObject.CHILD.equals(property)) refreshChildren(); else if (ERDObject.INPUT.equals(property)) refreshTargetConnections(); else if (ERDObject.OUTPUT.equals(property)) refreshSourceConnections(); /* * if (FlowElement.CHILDREN.equals(prop)) refreshChildren(); else if * (FlowElement.INPUTS.equals(prop)) refreshTargetConnections(); else if * (FlowElement.OUTPUTS.equals(prop)) refreshSourceConnections(); else * if (Activity.NAME.equals(prop)) refreshVisuals(); // Causes Graph to * re-layout */ ((GraphicalEditPart) (getViewer().getContents())).getFigure().revalidate(); } }