package com.dubture.composer.ui.editor.composer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import com.dubture.composer.ui.editor.ComposerFormPage; import com.dubture.composer.ui.editor.ComposerSection; import com.dubture.composer.ui.editor.FormEntryAdapter; import com.dubture.composer.ui.editor.FormLayoutFactory; import com.dubture.composer.ui.parts.FormEntry; import com.dubture.composer.ui.parts.WeblinkFormEntry; import com.dubture.getcomposer.core.objects.Support; public class SupportSection extends ComposerSection { Support support; private FormEntry emailEntry; private FormEntry issuesEntry; private FormEntry forumEntry; private FormEntry wikiEntry; private FormEntry ircEntry; private FormEntry sourceEntry; public SupportSection(ComposerFormPage page, Composite parent) { super(page, parent, Section.DESCRIPTION); support = composerPackage.getSupport(); createClient(getSection(), page.getManagedForm().getToolkit()); } @Override protected void createClient(Section section, FormToolkit toolkit) { section.setText("Support"); section.setDescription("Provide support options to your end-users."); section.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB)); Composite client = toolkit.createComposite(section); client.setLayout(FormLayoutFactory.createSectionClientTableWrapLayout(false, 2)); section.setClient(client); createEmailEntry(client, toolkit); createIssuesEntry(client, toolkit); createForumEntry(client, toolkit); createWikiEntry(client, toolkit); createIrcEntry(client, toolkit); createSourceEntry(client, toolkit); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); emailEntry.setEnabled(enabled); issuesEntry.setEnabled(enabled); forumEntry.setEnabled(enabled); wikiEntry.setEnabled(enabled); ircEntry.setEnabled(enabled); sourceEntry.setEnabled(enabled); } private void createEmailEntry(Composite client, FormToolkit toolkit) { emailEntry = new FormEntry(client, toolkit, "Email", null, false); emailEntry.setValue(support.getEmail(), true); emailEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setEmail(entry.getValue()); } }); support.addPropertyChangeListener("email", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { emailEntry.setValue(support.getEmail(), true); } }); } private void createIssuesEntry(Composite client, FormToolkit toolkit) { issuesEntry = new WeblinkFormEntry(client, toolkit, "Issues"); issuesEntry.setValue(support.getIssues()); issuesEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setIssues(entry.getValue()); } }); support.addPropertyChangeListener("issues", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { issuesEntry.setValue(support.getIssues(), true); } }); } private void createForumEntry(Composite client, FormToolkit toolkit) { forumEntry = new WeblinkFormEntry(client, toolkit, "Forum"); forumEntry.setValue(support.getForum()); forumEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setForum(entry.getValue()); } }); support.addPropertyChangeListener("forum", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { forumEntry.setValue(support.getForum(), true); } }); } private void createWikiEntry(Composite client, FormToolkit toolkit) { wikiEntry = new WeblinkFormEntry(client, toolkit, "Wiki"); wikiEntry.setValue(support.getWiki()); wikiEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setWiki(entry.getValue()); } }); support.addPropertyChangeListener("wiki", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { wikiEntry.setValue(support.getWiki(), true); } }); } private void createIrcEntry(Composite client, FormToolkit toolkit) { ircEntry = new WeblinkFormEntry(client, toolkit, "Irc"); ircEntry.setValue(support.getIrc()); ircEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setIrc(entry.getValue()); } }); support.addPropertyChangeListener("irc", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { ircEntry.setValue(support.getIrc(), true); } }); } private void createSourceEntry(Composite client, FormToolkit toolkit) { sourceEntry = new WeblinkFormEntry(client, toolkit, "Source"); sourceEntry.setValue(support.getSource()); sourceEntry.addFormEntryListener(new FormEntryAdapter() { public void textValueChanged(FormEntry entry) { support.setSource(entry.getValue()); } }); support.addPropertyChangeListener("source", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { sourceEntry.setValue(support.getSource(), true); } }); } }