package org.insightech.er.editor.controller.editpart.element.node; import java.beans.PropertyChangeEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.draw2d.FreeformLayer; import org.eclipse.draw2d.FreeformLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.swt.graphics.Color; import org.insightech.er.Resources; import org.insightech.er.editor.controller.editpolicy.ERDiagramLayoutEditPolicy; import org.insightech.er.editor.model.ViewableModel; 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.ermodel.ERModel; import org.insightech.er.editor.view.drag_drop.ERDiagramTransferDragSourceListener; public class ERModelEditPart extends NodeElementEditPart { @Override public void doPropertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals(ERModel.PROPERTY_CHANGE_VTABLES)) { // �e�[�u���z�u�ύX this.refreshChildren(); this.refresh(); } else if (event.getPropertyName().equals(ConnectionElement.PROPERTY_CHANGE_CONNECTION)) { System.out.println("aa"); } else if (event.getPropertyName().equals(ViewableModel.PROPERTY_CHANGE_COLOR)) { this.refreshVisuals(); } } @Override public void refresh() { super.refresh(); // �����̃R�����g�A�E�g�O����StackOverflow�ɂȂ�B�ʂ̂Ƃ���Ń��t���b�V������K�v���� // Map<NodeElement, EditPart> part = getModelToEditPart(); // for (Entry<NodeElement, EditPart> entry : part.entrySet()) { // if (entry.getKey() instanceof ERVirtualTable) { // entry.getValue().addNotify(); // } // } } @Override protected List getModelChildren() { List<Object> modelChildren = new ArrayList<Object>(); ERModel model = (ERModel) this.getModel(); modelChildren.addAll(model.getGroups()); modelChildren.addAll(model.getTables()); modelChildren.addAll(model.getNotes()); return modelChildren; } // @Override // protected Rectangle getRectangle() { // // TODO Auto-generated method stub // return super.getRectangle(); // } @Override protected IFigure createFigure() { // ERModel ermodel = (ERModel) this.getModel(); // ERModelFigure figure = new ERModelFigure(ermodel.getName()); // return figure; FreeformLayer layer = new FreeformLayer(); layer.setLayoutManager(new FreeformLayout()); return layer; } @Override protected void createEditPolicies() { this.installEditPolicy(EditPolicy.LAYOUT_ROLE, new ERDiagramLayoutEditPolicy()); } @Override public void refreshVisuals() { ERModel element = (ERModel) this.getModel(); int[] color = element.getColor(); if (color != null) { Color bgColor = Resources.getColor(color); this.getViewer().getControl().setBackground(bgColor); } for (Object child : this.getChildren()) { if (child instanceof NodeElementEditPart) { NodeElementEditPart part = (NodeElementEditPart) child; part.refreshVisuals(); } } } // private void internalRefreshTable(ERTable table) { // for (Entry<NodeElement, EditPart> entry : getModelToEditPart().entrySet()) { // if (entry.getKey().equals(table)) { // // �e�[�u���̍X�V // entry.getValue().refresh(); // } // } // // // } public void refreshRelations() { for (Object child : this.getChildren()) { if (child instanceof NodeElementEditPart) { NodeElementEditPart part = (NodeElementEditPart) child; part.refreshConnections(); } } } private Map<NodeElement, EditPart> getModelToEditPart() { Map<NodeElement, EditPart> modelToEditPart = new HashMap<NodeElement, EditPart>(); List children = getChildren(); for (int i = 0; i < children.size(); i++) { EditPart editPart = (EditPart) children.get(i); modelToEditPart.put((NodeElement) editPart.getModel(), editPart); } return modelToEditPart; } @Override protected void performRequestOpen() { // TODO Auto-generated method stub } @Override public EditPart getTargetEditPart(Request request) { System.out.println("ss"); if (ERDiagramTransferDragSourceListener.REQUEST_TYPE_PLACE_TABLE.equals(request.getType())) { return this; } return super.getTargetEditPart(request); } }