package com.nexirius.theteam.datamodel;
import com.nexirius.framework.datamodel.*;
import com.nexirius.framework.dataviewer.ViewerFactory;
import com.nexirius.theteam.persistence.TeamPersistenceManager;
import com.nexirius.theteam.persistence.FileBasedTeamPersistence;
import com.nexirius.theteam.persistence.DataBaseTeamPersistence;
public class MainModel extends StructModel {
MemberListModel memberList;
MemberModel selected;
AddressModel address;
ComboBoxModel persistenceSelector;
public static final String[] PERSISTENCE_OPTIONS = new String[] {"fileBasedPersistence", "databasePersistence"};
public static final String FIELD_PERSISTENCE_SELECTOR = "persistenceSelector";
public MainModel() {
super("Main");
init();
}
private void init() {
append(memberList = new MemberListModel());
append(selected = new MemberModel());
append(address = new AddressModel());
append(persistenceSelector = new ComboBoxModel(0, new MultiLanguageLabels(ViewerFactory.getInstance().getClientResource(), PERSISTENCE_OPTIONS), FIELD_PERSISTENCE_SELECTOR));
memberList.addDataModelListener(new MyListener());
persistenceSelector.addDataModelListener(new PersistenceSelectorListener());
}
public MemberModel getSelected() {
return selected;
}
public AddressModel getAddress() {
return address;
}
public MemberListModel getMemberList() {
return memberList;
}
public void updateSelected() {
try {
MemberModel m = (MemberModel) memberList.getHighlightedItem();
if (m == null) {
selected.clear();
return;
}
selected.dropData(m.dragData());
selected.getPerson().dropData(m.getPerson().dragData());
AddressModel mainAddress = selected.getMainAddress();
if (mainAddress == null) {
address.setFlag(ModelFlag.INVISIBLE, true);
} else {
address.setFlag(ModelFlag.INVISIBLE, false);
address.dropData(mainAddress.dragData());
}
} catch (Exception ex) {
//selected.setFlag(ModelFlag.INVISIBLE, true);
ex.printStackTrace();
}
//selected.setFlag(ModelFlag.INVISIBLE, false);
}
public void reload() {
memberList.clear();
selected.clear();
address.clear();
getMemberList().load();
}
class MyListener extends DataModelAdaptor {
public void dataModelEdit(DataModelEvent event) {
if (event.getId() == DataModelEvent.HIGHLIGHT_CHANGED || event.isMethodCall("updateSelected")) {
updateSelected();
}
}
}
class PersistenceSelectorListener extends DataModelAdaptor {
public void dataModelChangeValue(DataModelEvent event) {
if (persistenceSelector.getInt() == 0) {
TeamPersistenceManager.setPersistence(new FileBasedTeamPersistence());
} else {
TeamPersistenceManager.setPersistence(new DataBaseTeamPersistence());
}
reload();
}
}
}