performed javacscript:fix and worked on documentation
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / forms / AbstractCdmEntityWizardPage.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.forms;
12
13 import org.eclipse.jface.wizard.WizardPage;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.graphics.Color;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Display;
18
19 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
21 import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
22 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
23 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
24 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
25
26 /**
27 * <p>Abstract AbstractCdmEntityWizardPage class.</p>
28 *
29 * @author n.hoffmann
30 * @created Jun 1, 2010
31 * @version 1.0
32 */
33 public abstract class AbstractCdmEntityWizardPage<T extends IAnnotatableEntity> extends WizardPage implements IConversationEnabled {
34
35 protected CdmFormFactory formFactory;
36 protected T entity;
37
38 AbstractCdmDetailElement<T> detailElement;
39 private ConversationHolder conversation;
40
41 /**
42 * <p>Constructor for AbstractCdmEntityWizardPage.</p>
43 *
44 * @param formFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
45 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
46 * @param entity a T object.
47 * @param <T> a T object.
48 */
49 protected AbstractCdmEntityWizardPage(CdmFormFactory formFactory, ConversationHolder conversation, T entity) {
50 super("page");
51 this.formFactory = formFactory;
52 this.entity = entity;
53 this.conversation = conversation;
54 setDescription(getEntityTitle());
55 }
56
57 /**
58 * @return
59 */
60 private String getEntityTitle() {
61 if(entity instanceof IIdentifiableEntity){
62 ((IIdentifiableEntity) entity).getTitleCache();
63 }
64 return "";
65 }
66
67 /*
68 * (non-Javadoc)
69 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
70 */
71 /** {@inheritDoc} */
72 public void createControl(Composite parent) {
73 Composite control = formFactory.createComposite(parent);
74
75 control.setLayout(CdmFormFactory.LAYOUT(2, false));
76 WizardPageRootElement rootElement = new WizardPageRootElement(formFactory, control, getConversationHolder());
77
78 Color bgColor = getShell().getBackground();
79
80 detailElement = createElement(rootElement);
81
82 rootElement.setBackground(bgColor);
83 control.setBackground(bgColor);
84
85 setControl(control);
86 }
87
88 /**
89 * <p>Getter for the field <code>entity</code>.</p>
90 *
91 * @return a T object.
92 */
93 public T getEntity() {
94 return entity;
95 }
96
97 /**
98 * Creates the detail element for this wizard page
99 *
100 * @param rootElement a {@link eu.etaxonomy.taxeditor.forms.ICdmFormElement} object.
101 * @return a {@link eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement} object.
102 */
103 public abstract AbstractCdmDetailElement createElement(ICdmFormElement rootElement);
104
105 private class WizardPageRootElement extends RootElement implements IConversationEnabled{
106
107 private ConversationHolder conversation;
108
109 public WizardPageRootElement(CdmFormFactory formFactory,
110 Composite layoutComposite, ConversationHolder conversation) {
111 super(formFactory, layoutComposite);
112 this.conversation = conversation;
113 }
114
115 @Override
116 public void refresh() {
117 super.refresh();
118 this.removeElements();
119 detailElement = createElement(this);
120 ((Composite) getControl()).layout();
121 }
122
123 public ConversationHolder getConversationHolder() {
124 return conversation;
125 }
126
127 public void update(CdmDataChangeMap changeEvents) {}
128 }
129
130 /**
131 * <p>getConversationHolder</p>
132 *
133 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
134 */
135 public ConversationHolder getConversationHolder() {
136 return conversation;
137 }
138
139 /** {@inheritDoc} */
140 @Override
141 public void dispose() {
142 super.dispose();
143 detailElement.removeElements();
144 }
145
146 /**
147 * <p>Getter for the field <code>detailElement</code>.</p>
148 *
149 * @return a {@link eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement} object.
150 */
151 public AbstractCdmDetailElement<T> getDetailElement() {
152 return detailElement;
153 }
154
155 /** {@inheritDoc} */
156 public void update(CdmDataChangeMap changeEvents) {}
157 }