Mockup with Master-Details page.
[taxeditor.git] / src / eu / etaxonomy / taxeditor / ScrolledPropertiesBlock.java
1 package eu.etaxonomy.taxeditor;
2
3 import org.eclipse.jface.action.Action;
4 import org.eclipse.jface.viewers.ISelectionChangedListener;
5 import org.eclipse.jface.viewers.IStructuredContentProvider;
6 import org.eclipse.jface.viewers.ITableLabelProvider;
7 import org.eclipse.jface.viewers.LabelProvider;
8 import org.eclipse.jface.viewers.SelectionChangedEvent;
9 import org.eclipse.jface.viewers.TableViewer;
10 import org.eclipse.jface.viewers.Viewer;
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.graphics.Image;
13 import org.eclipse.swt.layout.GridData;
14 import org.eclipse.swt.layout.GridLayout;
15 import org.eclipse.swt.widgets.Button;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Table;
18 import org.eclipse.ui.ISharedImages;
19 import org.eclipse.ui.PlatformUI;
20 import org.eclipse.ui.forms.DetailsPart;
21 import org.eclipse.ui.forms.IManagedForm;
22 import org.eclipse.ui.forms.MasterDetailsBlock;
23 import org.eclipse.ui.forms.SectionPart;
24 import org.eclipse.ui.forms.editor.FormPage;
25 import org.eclipse.ui.forms.widgets.FormToolkit;
26 import org.eclipse.ui.forms.widgets.ScrolledForm;
27 import org.eclipse.ui.forms.widgets.Section;
28
29 public class ScrolledPropertiesBlock extends MasterDetailsBlock {
30 private FormPage page;
31 public ScrolledPropertiesBlock(FormPage page) {
32 this.page = page;
33 }
34 /**
35 * @param id
36 * @param title
37 */
38 class MasterContentProvider implements IStructuredContentProvider {
39 public Object[] getElements(Object inputElement) {
40 if (inputElement instanceof SimpleFormEditorInput) {
41 SimpleFormEditorInput input = (SimpleFormEditorInput) page
42 .getEditor().getEditorInput();
43 return input.getModel().getContents();
44 }
45 return new Object[0];
46 }
47 public void dispose() {
48 }
49 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
50 }
51 }
52 class MasterLabelProvider extends LabelProvider
53 implements
54 ITableLabelProvider {
55 public String getColumnText(Object obj, int index) {
56 return obj.toString();
57 }
58 public Image getColumnImage(Object obj, int index) {
59 /*if (obj instanceof TypeOne) {
60 return PlatformUI.getWorkbench().getSharedImages().getImage(
61 ISharedImages.IMG_OBJ_ELEMENT);
62 }
63 if (obj instanceof TypeTwo) {
64 return PlatformUI.getWorkbench().getSharedImages().getImage(
65 ISharedImages.IMG_OBJ_FILE);
66 }
67 return null;
68 */
69 return null;
70 }
71 }
72 protected void createMasterPart(final IManagedForm managedForm,
73 Composite parent) {
74 //final ScrolledForm form = managedForm.getForm();
75 FormToolkit toolkit = managedForm.getToolkit();
76 Section section = toolkit.createSection(parent, Section.DESCRIPTION|Section.TITLE_BAR);
77 section.setText(Messages.getString("ScrolledPropertiesBlock.sname")); //$NON-NLS-1$
78 section
79 .setDescription(Messages.getString("ScrolledPropertiesBlock.sdesc")); //$NON-NLS-1$
80 section.marginWidth = 10;
81 section.marginHeight = 5;
82 Composite client = toolkit.createComposite(section, SWT.WRAP);
83 GridLayout layout = new GridLayout();
84 layout.numColumns = 2;
85 layout.marginWidth = 2;
86 layout.marginHeight = 2;
87 client.setLayout(layout);
88 Table t = toolkit.createTable(client, SWT.NULL);
89 GridData gd = new GridData(GridData.FILL_BOTH);
90 gd.heightHint = 20;
91 gd.widthHint = 100;
92 t.setLayoutData(gd);
93 toolkit.paintBordersFor(client);
94 Button b = toolkit.createButton(client, Messages.getString("ScrolledPropertiesBlock.add"), SWT.PUSH); //$NON-NLS-1$
95 gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
96 b.setLayoutData(gd);
97 section.setClient(client);
98 final SectionPart spart = new SectionPart(section);
99 managedForm.addPart(spart);
100 TableViewer viewer = new TableViewer(t);
101 viewer.addSelectionChangedListener(new ISelectionChangedListener() {
102 public void selectionChanged(SelectionChangedEvent event) {
103 managedForm.fireSelectionChanged(spart, event.getSelection());
104 }
105 });
106 viewer.setContentProvider(new MasterContentProvider());
107 viewer.setLabelProvider(new MasterLabelProvider());
108 viewer.setInput(page.getEditor().getEditorInput());
109 }
110 protected void createToolBarActions(IManagedForm managedForm) {
111 final ScrolledForm form = managedForm.getForm();
112 Action haction = new Action("hor", Action.AS_RADIO_BUTTON) { //$NON-NLS-1$
113 public void run() {
114 sashForm.setOrientation(SWT.HORIZONTAL);
115 form.reflow(true);
116 }
117 };
118 haction.setChecked(true);
119 haction.setToolTipText(Messages.getString("ScrolledPropertiesBlock.horizontal")); //$NON-NLS-1$
120 haction.setImageDescriptor(Activator.getDefault()
121 .getImageRegistry()
122 .getDescriptor(Activator.IMG_HORIZONTAL));
123 Action vaction = new Action("ver", Action.AS_RADIO_BUTTON) { //$NON-NLS-1$
124 public void run() {
125 sashForm.setOrientation(SWT.VERTICAL);
126 form.reflow(true);
127 }
128 };
129 vaction.setChecked(false);
130 vaction.setToolTipText(Messages.getString("ScrolledPropertiesBlock.vertical")); //$NON-NLS-1$
131 vaction.setImageDescriptor(Activator.getDefault()
132 .getImageRegistry().getDescriptor(Activator.IMG_VERTICAL));
133 form.getToolBarManager().add(haction);
134 form.getToolBarManager().add(vaction);
135 }
136 protected void registerPages(DetailsPart detailsPart) {
137 detailsPart.registerPage(Name.class, new NameDetailsPage());
138 }
139 }