package enfo.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.ViewPart;
import enfo.ui.command.CommandPanel;
import enfo.ui.editor.EditorPanel;
import enfo.ui.perspective.PerspectivePanel;
import enfo.ui.view.ViewPanel;
public class EnfoView extends ViewPart {
private static final String MEMENTO_SELECTION_INDEX = "tabFolderSelectionIndex";
private IMemento memento;
private CTabFolder folder;
private final IPanel[] panels = new IPanel[] {
new ViewPanel(this),
new EditorPanel(this),
new PerspectivePanel(this),
new CommandPanel(this),
};
private final String[] panelNames = new String[] {
"Views",
"Editors",
"Perspectives",
"Commands",
};
public EnfoView() {
}
@Override
public void init(IViewSite site, IMemento memento) throws PartInitException {
this.memento = memento;
super.init(site, memento);
}
@Override
public void createPartControl(Composite parent) {
folder = new CTabFolder(parent, SWT.BOTTOM);
for (int i = 0; i < panels.length; i++) {
Composite cmp = new Composite(folder, SWT.NONE);
cmp.setLayout(new FillLayout());
CTabItem item = new CTabItem(folder, SWT.NONE);
item.setControl(panels[i].createContents(cmp));
item.setText(panelNames[i]);
}
folder.setSelection(0);
if (memento != null) {
IMemento m = memento.getChild(MEMENTO_SELECTION_INDEX);
if (m != null) {
try {
folder.setSelection(Integer.parseInt(m.getTextData()));
} catch (Exception e) {
}
}
for (IPanel p : panels) {
p.restoreState(memento);
}
}
}
@Override
public void setContentDescription(String description) {
super.setContentDescription(description);
}
@Override
public void saveState(IMemento memento) {
IMemento m = memento.createChild(MEMENTO_SELECTION_INDEX);
m.putTextData(Integer.toString(folder.getSelectionIndex()));
for (IPanel p : panels) {
p.saveState(memento);
}
}
@Override
public void setFocus() {
}
}