DbEntity dbEntity = (DbEntity) dbEntityCombo.getSelectedItem();
syncWithDbEntityButton.setEnabled(dbEntity != null);
if (dbEntity != entity.getDbEntity()) {
entity.setDbEntity(dbEntity);
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
superEntityCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Change super-entity
CayenneMapEntry superEntity = (CayenneMapEntry) superEntityCombo
.getSelectedItem();
String name = (superEntity == null || superEntity == noInheritance)
? null
: superEntity.getName();
ObjEntity entity = mediator.getCurrentObjEntity();
if (!Util.nullSafeEquals(name, entity.getSuperEntityName())) {
List<ObjAttribute> duplicateAttributes = null;
if (name != null) {
duplicateAttributes = getDuplicatedAttributes((ObjEntity) superEntity);
}
if (duplicateAttributes != null && duplicateAttributes.size() > 0) {
DuplicatedAttributesDialog.showDialog(
Application.getFrame(),
duplicateAttributes,
(ObjEntity) superEntity,
entity);
if (DuplicatedAttributesDialog.getResult().equals(
DuplicatedAttributesDialog.CANCEL_RESULT)) {
superEntityCombo.setSelectedItem(entity.getSuperEntity());
superClassName.setText(entity.getSuperClassName());
return;
}
}
entity.setSuperEntityName(name);
if (name == null) {
dbEntityCombo.setEnabled(true);
}
else {
dbEntityCombo.setEnabled(false);
dbEntityCombo.getModel().setSelectedItem(null);
}
// if a super-entity selected, disable table selection
// and also update parent DbEntity selection...
toggleEnabled(name == null, !serverOnly.isSelected());
dbEntityCombo.getModel().setSelectedItem(entity.getDbEntity());
superClassName.setText(entity.getSuperClassName());
// fire both EntityEvent and EntityDisplayEvent;
// the later is to update attribute and relationship display
DataChannelDescriptor domain = (DataChannelDescriptor) mediator
.getProject()
.getRootNode();
DataMap map = mediator.getCurrentDataMap();
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
mediator.fireObjEntityDisplayEvent(new EntityDisplayEvent(
this,
entity,
map,
domain));
}
}
});
tableLabel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Jump to DbEntity of the current ObjEntity
DbEntity entity = mediator.getCurrentObjEntity().getDbEntity();
if (entity != null) {
DataChannelDescriptor dom = (DataChannelDescriptor) mediator
.getProject()
.getRootNode();
mediator.fireDbEntityDisplayEvent(new EntityDisplayEvent(
this,
entity,
entity.getDataMap(),
dom));
}
}
});
syncWithDbEntityButton.addActionListener(new ObjEntitySyncAction(mediator
.getApplication()));
readOnly.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setReadOnly(readOnly.isSelected());
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
optimisticLocking.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setDeclaredLockType(optimisticLocking.isSelected()
? ObjEntity.LOCK_TYPE_OPTIMISTIC
: ObjEntity.LOCK_TYPE_NONE);
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
excludeSuperclassListeners.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setExcludingSuperclassListeners(excludeSuperclassListeners
.isSelected());
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
excludeDefaultListeners.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setExcludingDefaultListeners(excludeDefaultListeners
.isSelected());
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
serverOnly.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setServerOnly(serverOnly.isSelected());
toggleEnabled(dbEntityCombo.isEnabled(), !serverOnly.isSelected());
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
isAbstract.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null) {
entity.setAbstract(isAbstract.isSelected());
mediator.fireObjEntityEvent(new EntityEvent(this, entity));
}
}
});
}