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.DbAttribute; 67 import org.objectstyle.cayenne.map.DbRelationship; 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.DbAttributeDisplayListener; 75 import org.objectstyle.cayenne.modeler.event.DbEntityDisplayListener; 76 import org.objectstyle.cayenne.modeler.event.DbRelationshipDisplayListener; 77 import org.objectstyle.cayenne.modeler.event.EntityDisplayEvent; 78 import org.objectstyle.cayenne.modeler.event.RelationshipDisplayEvent; 79 80 public class DbEntityTabbedView extends JTabbedPane implements ChangeListener , 81 DbEntityDisplayListener, DbRelationshipDisplayListener, 82 DbAttributeDisplayListener { 83 84 protected ProjectController mediator; 85 86 protected DbEntityTab entityPanel; 87 protected DbEntityAttributeTab attributesPanel; 88 protected DbEntityRelationshipTab relationshipsPanel; 89 90 public DbEntityTabbedView(ProjectController mediator) { 91 super(); 92 this.mediator = mediator; 93 mediator.addDbEntityDisplayListener(this); 94 mediator.addDbAttributeDisplayListener(this); 95 mediator.addDbRelationshipDisplayListener(this); 96 97 setTabPlacement(JTabbedPane.TOP); 98 99 103 entityPanel = new DbEntityTab(mediator); 104 addTab("Entity", new JScrollPane (entityPanel)); 105 attributesPanel = new DbEntityAttributeTab(mediator); 106 addTab("Attributes", attributesPanel); 107 relationshipsPanel = new DbEntityRelationshipTab(mediator); 108 addTab("Relationships", relationshipsPanel); 109 110 addChangeListener(this); 111 } 112 113 114 private void resetRemoveButtons(){ 115 Application app = Application.getInstance(); 116 app.getAction(RemoveAttributeAction.getActionName()).setEnabled(false); 117 app.getAction(RemoveRelationshipAction.getActionName()).setEnabled(false); 118 } 119 120 121 public void stateChanged(ChangeEvent e) { 122 resetRemoveButtons(); 123 124 Component selected = getSelectedComponent(); 126 while (selected instanceof JScrollPane ) { 127 selected = ((JScrollPane ) selected).getViewport().getView(); 128 } 129 130 ExistingSelectionProcessor proc = (ExistingSelectionProcessor) selected; 131 proc.processExistingSelection(e); 132 } 133 134 135 public void currentDbEntityChanged(EntityDisplayEvent e) { 136 resetRemoveButtons(); 137 setVisible(e.getEntity() != null); 138 } 139 140 public void currentDbRelationshipChanged(RelationshipDisplayEvent e) { 141 if (e.getEntity() == null) { 142 return; 143 } 144 145 Relationship rel = e.getRelationship(); 147 if (rel instanceof DbRelationship) { 148 149 if (getSelectedComponent() != relationshipsPanel) { 151 setSelectedComponent(relationshipsPanel); 152 relationshipsPanel.setVisible(true); 153 } 154 155 relationshipsPanel.selectRelationship((DbRelationship) rel); 156 } 157 } 158 159 public void currentDbAttributeChanged(AttributeDisplayEvent e) { 160 if (e.getEntity() == null) 161 return; 162 163 Attribute attr = e.getAttribute(); 165 if (attr instanceof DbAttribute) { 166 if (getSelectedComponent() != attributesPanel){ 167 setSelectedComponent(attributesPanel); 168 attributesPanel.setVisible(true); 169 } 170 attributesPanel.selectAttribute((DbAttribute) attr); 171 } 172 } 173 } | Popular Tags |