package com.nexirius.theteam.dataeditor;
import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.dataviewer.ViewerFactory;
import com.nexirius.framework.gadgets.ArrayLayout;
import com.nexirius.framework.gadgets.ArrayPanel;
import com.nexirius.framework.swing.CFJTabbedPane;
import com.nexirius.theteam.datamodel.AddressListModel;
import com.nexirius.theteam.datamodel.MemberModel;
import com.nexirius.theteam.datamodel.PersonModel;
import com.nexirius.theteam.datamodel.PhoneListModel;
import com.nexirius.util.resource.ClientResource;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
public class MemberEditor extends StandardStructEditor {
protected MemberModel memberModel;
public JComponent createJComponent(ViewerFactory factory) {
ClientResource cr = factory.getClientResource();
CFJTabbedPane tabbedPane = new CFJTabbedPane(cr);
try {
JPanel personPanel = new ArrayPanel(false, ArrayLayout.FULL_SIZE);
JComponent personEditor = factory.createDefaultEditor(memberModel.getPerson()).getJComponent();
personPanel.add(personEditor);
personPanel.add(createFieldEditor(MemberModel.FIELD_TYPE, factory));
tabbedPane.addTab(PersonModel.FIELD_PERSON, createTabComponent(personPanel));
DataModel addressList = memberModel.getChild(AddressListModel.FIELD_ADDRESS_LIST);
tabbedPane.addTab(AddressListModel.FIELD_ADDRESS_LIST, createTabComponent(factory.createDefaultEditor(addressList).getJComponent()));
DataModel phoneList = memberModel.getChild(PhoneListModel.FIELD_PHONE_LIST);
tabbedPane.addTab(PhoneListModel.FIELD_PHONE_LIST, createTabComponent(factory.createDefaultEditor(phoneList).getJComponent()));
} catch (Exception e) {
e.printStackTrace();
}
tabbedPane.setPreferredSize(new Dimension(450, 300));
return tabbedPane;
}
public JComponent createTabComponent(JComponent body) {
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
panel.add(body, BorderLayout.CENTER);
return panel;
}
public boolean isEditor() {
return true;
}
public void setDataModel(DataModel model) {
memberModel = (MemberModel) model;
}
public DataModel getDataModel() {
return memberModel;
}
}