/* * Created on 2006-09-06 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.ms.designer.editors.packages.editparts; import java.util.ArrayList; import java.util.List; import java.util.Vector; import net.ms.designer.editors.componentdetail.editparts.CommonEditPart; import net.ms.designer.editors.componentdetail.editparts.CompTableEditPart; import net.ms.designer.editors.componentdetail.editparts.DiagramEditPart; import net.ms.designer.editors.componentdetail.editparts.FlowEditPart; import net.ms.designer.editors.componentdetail.editparts.LabelEditPart; import net.ms.designer.editors.componentdetail.editparts.WireEditPart; import net.ms.designer.editors.componentdetail.models.AutoNumField; import net.ms.designer.editors.componentdetail.models.AutoPField; import net.ms.designer.editors.componentdetail.models.ChildTable; import net.ms.designer.editors.componentdetail.models.CommonField; import net.ms.designer.editors.componentdetail.models.ComponentTable; import net.ms.designer.editors.componentdetail.models.Element; import net.ms.designer.editors.componentdetail.models.FlowField; import net.ms.designer.editors.componentdetail.models.Label; import net.ms.designer.editors.componentdetail.models.Table; import net.ms.designer.editors.componentdetail.models.Wire; import net.ms.designer.editors.packages.models.PackageDiagram; import net.ms.designer.editors.workflow.editparts.WorkflowBaseActivityEditPart; import net.ms.designer.editors.workflow.editparts.WorkflowDiagramEditPart; import net.ms.designer.editors.workflow.models.WorkflowBaseActivity; import net.ms.designer.editors.workflow.models.WorkflowDiagram; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartFactory; public class PartFactory implements EditPartFactory { public EditPart createEditPart(EditPart context, Object model) { EditPart part = null; if (model instanceof PackageDiagram) part = new DiagramPart(); else if (model instanceof net.ms.designer.editors.packages.models.Package) part = new net.ms.designer.editors.packages.editparts.NodePart(); else if (model instanceof net.ms.designer.editors.component.models.CompDiagram) part = new net.ms.designer.editors.component.editparts.DiagramPart(); else if (model instanceof net.ms.designer.editors.component.models.Component) part = new net.ms.designer.editors.component.editparts.NodePart(); else if (model instanceof net.ms.designer.editors.enumcomponentdetail.model.Container) part = new net.ms.designer.editors.enumcomponentdetail.editpart.ContainerEditPart(); else if (model instanceof net.ms.designer.editors.enumcomponentdetail.model.Table) part = new net.ms.designer.editors.enumcomponentdetail.editpart.TableEditPart(); else if (model instanceof net.ms.designer.editors.enumcomponentdetail.model.ValueField) part = new net.ms.designer.editors.enumcomponentdetail.editpart.ValueFieldEditPart(); else if((model instanceof ChildTable) && !(model instanceof ComponentTable)) { part = new CompTableEditPart(); } else if (model instanceof net.ms.designer.editors.componentdetail.models.Table) { part = new CompTableEditPart(); } else if(model instanceof FlowField) { part = new FlowEditPart(); } else if (model instanceof Wire) part = new WireEditPart(); else if (model instanceof Label) part = new LabelEditPart(); else if (model instanceof CommonField) { part = new CommonEditPart(); } else if (model instanceof net.ms.designer.editors.componentdetail.models.Container) { net.ms.designer.editors.componentdetail.models.Container ct = (net.ms.designer.editors.componentdetail.models.Container) model; part = new net.ms.designer.editors.componentdetail.editparts.DiagramEditPart(); part.setModel(ct); return part; } if (context instanceof DiagramEditPart && (model instanceof ChildTable )) { //-------------lili 1115 start List list1 = new ArrayList(); List list = context.getChildren(); ChildTable ct = (ChildTable) model; for(int j = 0 ; j < list.size() ; j++) { if(((EditPart)list.get(j)).getSelected() == 2 ) { if(!((Element)((EditPart)list.get(j)).getModel() instanceof FlowField)) { list1.add((Table)((CompTableEditPart)list.get(j)).getModel()); String newName = ((Table)((CompTableEditPart)list.get(j)).getModel()).getName(); //System.out.println(((Table)((CompTableEditPart)list.get(j)).getModel()).getName()); Table conctedTable = ((Table)((CompTableEditPart)list.get(j)).getModel()); // ----------lili 1120 start AutoPField ap = new AutoPField(); AutoNumField au = new AutoNumField(); ap.setName(newName.toLowerCase()+"id"); au.setName(ct.getName().toLowerCase()+"id"); ct.addChild(au); //ct.addChild(ap); //-----------lili 1120 end -you wen ti if(conctedTable instanceof ComponentTable) { ComponentTable mainTable = (ComponentTable)conctedTable; mainTable.setHasChildTable(1); } conctedTable.getSubTabel().add(ct); boolean hasConnToTable = false; Vector conns = ct.getSourceConnections(); for(int i = 0; i < conns.size(); i++) { Wire w = (Wire) conns.get(i); Element target = (Element )w.getTarget(); if ((target instanceof ChildTable) && target.getName().equals(((Table)((CompTableEditPart)list.get(j)).getModel()).getName())) { hasConnToTable = true; break; } } // if (!hasConnToTable) // { // Wire wire = new Wire(); // wire.setSource(ct); // wire.setTarget(((Table)((CompTableEditPart)list.get(j)).getModel())); // wire.attachSource(); // wire.attachTarget(); // // // } ((net.ms.designer.editors.componentdetail.models.Container)context.getModel()).flag = 0; } } } if(list1.size()==0 && !(model instanceof ComponentTable)) { boolean hasConnToMainTable = false; //look out it has connet to the mainTable or not ComponentTable mainTable = ((DiagramEditPart) context).getDiagram().getMainTable(); mainTable.setHasChildTable(1); // ----------lili 1120 start if(((net.ms.designer.editors.componentdetail.models.Container)context.getModel()).flag == 1) { AutoPField ap = new AutoPField(); AutoNumField au = new AutoNumField(); ap.setName(mainTable.getName().toLowerCase()+"id"); au.setName(ct.getName().toLowerCase()+"id"); ct.addChild(au); //ct.addChild(ap); mainTable.getSubTabel().add(ct); ((net.ms.designer.editors.componentdetail.models.Container)context.getModel()).flag = 0; } //-----------lili 1120 end Vector conns = ct.getSourceConnections(); for (int i = 0; i < conns.size(); i++) { Wire w = (Wire) conns.get(i); Element target = (Element )w.getTarget(); if ((target instanceof ComponentTable) || !target.getName().equals(mainTable.getName())) { hasConnToMainTable = true; break; } } // if (!hasConnToMainTable) { // Wire wire = new Wire(); // wire.setSource(ct); // wire.setTarget(((DiagramEditPart) context).getDiagram() // .getMainTable()); // wire.attachSource(); // wire.attachTarget(); // } } } if (context instanceof net.ms.designer.editors.componentdetail.editparts.DiagramEditPart &&(model instanceof FlowField)) { //connet to the mainTable to the mainTable FlowField ff = (FlowField)model; boolean hasConnToMainTable1 = false; //look out it has connet to the mainTable or not ComponentTable mainTable = ((net.ms.designer.editors.componentdetail.editparts.DiagramEditPart) context).getDiagram().getMainTable(); mainTable.setFlowAssociated(1); Vector conns = ff.getSourceConnections(); for (int i = 0; i < conns.size(); i++) { Wire w = (Wire) conns.get(i); net.ms.designer.editors.componentdetail.models.Element target = (net.ms.designer.editors.componentdetail.models.Element)w.getTarget(); if ((target instanceof ComponentTable) || !target.getName().equals(mainTable.getName())) { hasConnToMainTable1 = true; break; } } if (!hasConnToMainTable1) { Wire wire = new Wire(); wire.setSource(ff); wire.setTarget(((net.ms.designer.editors.componentdetail.editparts.DiagramEditPart) context).getDiagram() .getMainTable()); wire.attachSource(); wire.attachTarget(); } } // //end // if (model instanceof WorkflowDiagram) { part = new WorkflowDiagramEditPart(); } if (model instanceof net.ms.designer.editors.workflow.models.Wire) { part = new net.ms.designer.editors.workflow.editparts.WireEditPart(); } if (model instanceof WorkflowBaseActivity) { part = new WorkflowBaseActivityEditPart(); } part.setModel(model); return part; } }