1 56 package org.objectstyle.cayenne.modeler.editor; 57 58 import java.awt.Component ; 59 60 import javax.swing.JScrollPane ; 61 import javax.swing.JTabbedPane ; 62 import javax.swing.event.ChangeEvent ; 63 import javax.swing.event.ChangeListener ; 64 65 import org.objectstyle.cayenne.map.Attribute; 66 import org.objectstyle.cayenne.map.ObjAttribute; 67 import org.objectstyle.cayenne.map.ObjRelationship; 68 import org.objectstyle.cayenne.map.Relationship; 69 import org.objectstyle.cayenne.modeler.Application; 70 import org.objectstyle.cayenne.modeler.ProjectController; 71 import org.objectstyle.cayenne.modeler.action.RemoveAttributeAction; 72 import org.objectstyle.cayenne.modeler.action.RemoveRelationshipAction; 73 import org.objectstyle.cayenne.modeler.event.AttributeDisplayEvent; 74 import org.objectstyle.cayenne.modeler.event.EntityDisplayEvent; 75 import org.objectstyle.cayenne.modeler.event.ObjAttributeDisplayListener; 76 import org.objectstyle.cayenne.modeler.event.ObjEntityDisplayListener; 77 import org.objectstyle.cayenne.modeler.event.ObjRelationshipDisplayListener; 78 import org.objectstyle.cayenne.modeler.event.RelationshipDisplayEvent; 79 80 86 public class ObjEntityTabbedView extends JTabbedPane implements ObjEntityDisplayListener, 87 ObjRelationshipDisplayListener, ObjAttributeDisplayListener { 88 89 protected ProjectController mediator; 90 protected ObjEntityRelationshipTab relationshipsPanel; 91 protected ObjEntityAttributeTab attributesPanel; 92 93 public ObjEntityTabbedView(ProjectController mediator) { 94 this.mediator = mediator; 95 96 initView(); 97 initController(); 98 } 99 100 private void initView() { 101 setTabPlacement(JTabbedPane.TOP); 102 103 107 ObjEntityTab entityPanel = new ObjEntityTab(mediator); 108 addTab("Entity", new JScrollPane (entityPanel)); 109 110 attributesPanel = new ObjEntityAttributeTab(mediator); 111 addTab("Attributes", attributesPanel); 112 113 relationshipsPanel = new ObjEntityRelationshipTab(mediator); 114 addTab("Relationships", relationshipsPanel); 115 } 116 117 private void initController() { 118 mediator.addObjEntityDisplayListener(this); 119 mediator.addObjAttributeDisplayListener(this); 120 mediator.addObjRelationshipDisplayListener(this); 121 122 addChangeListener(new ChangeListener () { 123 124 public void stateChanged(ChangeEvent e) { 125 resetRemoveButtons(); 126 Component selected = getSelectedComponent(); 127 while (selected instanceof JScrollPane ) { 128 selected = ((JScrollPane ) selected).getViewport().getView(); 129 } 130 131 ((ExistingSelectionProcessor) selected).processExistingSelection(e); 132 } 133 }); 134 } 135 136 137 private void resetRemoveButtons(){ 138 Application app = Application.getInstance(); 139 app.getAction(RemoveAttributeAction.getActionName()).setEnabled(false); 140 app.getAction(RemoveRelationshipAction.getActionName()).setEnabled(false); 141 } 142 143 public void currentObjEntityChanged(EntityDisplayEvent e) { 144 resetRemoveButtons(); 145 setVisible(e.getEntity() != null); 146 } 147 148 public void currentObjRelationshipChanged(RelationshipDisplayEvent e) { 149 if (e.getEntity() == null) { 150 return; 151 } 152 153 Relationship rel = e.getRelationship(); 155 if (rel instanceof ObjRelationship) { 156 if (getSelectedComponent() != relationshipsPanel) { 157 setSelectedComponent(relationshipsPanel); 158 relationshipsPanel.setVisible(true); 159 } 160 relationshipsPanel.selectRelationship((ObjRelationship) rel); 161 } 162 } 163 164 public void currentObjAttributeChanged(AttributeDisplayEvent e) { 165 if (e.getEntity() == null) 166 return; 167 168 Attribute attr = e.getAttribute(); 170 if (attr instanceof ObjAttribute) { 171 if (getSelectedComponent() != attributesPanel) { 172 setSelectedComponent(attributesPanel); 173 attributesPanel.setVisible(true); 174 } 175 attributesPanel.selectAttribute((ObjAttribute) attr); 176 } 177 } 178 } | Popular Tags |