(no commit message)
[taxeditor.git] / taxeditor-printpublisher / src / main / java / eu / etaxonomy / printpublisher / wizard / SelectServiceWizardPage.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.printpublisher.wizard;
12
13 import java.net.MalformedURLException;
14
15 import org.apache.log4j.Logger;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.events.ModifyEvent;
18 import org.eclipse.swt.events.ModifyListener;
19 import org.eclipse.swt.events.SelectionAdapter;
20 import org.eclipse.swt.events.SelectionEvent;
21 import org.eclipse.swt.layout.GridData;
22 import org.eclipse.swt.layout.GridLayout;
23 import org.eclipse.swt.widgets.Button;
24 import org.eclipse.swt.widgets.Composite;
25 import org.eclipse.swt.widgets.Label;
26 import org.eclipse.swt.widgets.Text;
27
28 import eu.etaxonomy.printpublisher.PublishConfigurator;
29 import eu.etaxonomy.taxeditor.store.CdmStore;
30
31 /**
32 * @author n.hoffmann
33 * @created Apr 6, 2010
34 * @version 1.0
35 */
36 public class SelectServiceWizardPage extends AbstractPublishWizardPage {
37
38
39 private static final Logger logger = Logger
40 .getLogger(SelectServiceWizardPage.class);
41
42 private Composite composite;
43 private Button button_local;
44 private Button button_remote;
45 private Label label_serviceUrl;
46 private Text text_serviceUrl;
47
48 protected SelectServiceWizardPage(String pageName) {
49 super(pageName);
50 setTitle("Select a Service");
51 }
52
53 /* (non-Javadoc)
54 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
55 */
56 public void createControl(Composite parent) {
57
58 composite = new Composite(parent, SWT.NULL);
59 composite.setLayout(new GridLayout());
60
61 RadioSelectionListener listener = new RadioSelectionListener();
62
63 button_local = new Button(composite, SWT.RADIO);
64 button_local.setText("Local (By selecting this option the database you are currently " +
65 "connected to will be used to gather data.)");
66
67 button_local.addSelectionListener(listener);
68
69
70
71 button_remote = new Button(composite, SWT.RADIO);
72 button_remote.setText("Remote");
73 button_remote.addSelectionListener(listener);
74
75
76 label_serviceUrl = new Label(composite, SWT.NULL);
77 label_serviceUrl.setText("Service URL");
78
79 text_serviceUrl = new Text(composite, SWT.BORDER);
80 text_serviceUrl.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
81 text_serviceUrl.setText("http://");
82 text_serviceUrl.addModifyListener(new ModifyListener() {
83
84 public void modifyText(ModifyEvent e) {
85 String text = text_serviceUrl.getText();
86
87 try {
88 getConfigurator().setWebserviceUrl(text);
89 } catch (MalformedURLException e1) {
90 logger.warn("Malformed Url");
91 }
92
93 if(isPageComplete()){
94 SelectServiceWizardPage.this.setErrorMessage(null);
95 setPageComplete(true);
96 }else{
97 SelectServiceWizardPage.this.setErrorMessage("Webservice URL has to end with \"/\"");
98 setPageComplete(false);
99 }
100 }
101 });
102
103 if(CdmStore.isActive()){
104 enableLocal();
105 }else{
106 enableRemote();
107 button_local.setEnabled(false);
108 }
109
110 setControl(composite);
111
112 }
113
114 private class RadioSelectionListener extends SelectionAdapter{
115 @Override
116 public void widgetSelected(SelectionEvent e) {
117 if(e.widget == button_local){
118 enableLocal();
119 }else{
120 enableRemote();
121 }
122 }
123 }
124
125 private void enableRemote() {
126 button_local.setSelection(false);
127 button_remote.setSelection(true);
128
129 label_serviceUrl.setEnabled(true);
130 text_serviceUrl.setEnabled(true);
131
132 setConfigurator(PublishConfigurator.NewRemoteInstance());
133 getConfigurator().addOutputModule(getOutputModule());
134 }
135
136 private void enableLocal() {
137 button_remote.setSelection(false);
138 button_local.setSelection(true);
139
140 label_serviceUrl.setEnabled(false);
141 text_serviceUrl.setEnabled(false);
142
143 setConfigurator(PublishConfigurator.NewLocalInstance(CdmStore.getCurrentApplicationController()));
144 getConfigurator().addOutputModule(getOutputModule());
145 }
146
147 /*
148 * (non-Javadoc)
149 * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
150 */
151 @Override
152 public boolean canFlipToNextPage() {
153 if(isPageComplete()){
154 SelectTaxaWizardPage selectTaxaPage = (SelectTaxaWizardPage) getWizard().getPage(AbstractPublishWizard.PAGE_TAXA);
155 selectTaxaPage.refresh();
156
157 SelectFeatureTreeWizardPage selectFeatureTreePage = (SelectFeatureTreeWizardPage) getWizard().getPage(AbstractPublishWizard.PAGE_FEATURETREE);
158 selectFeatureTreePage.refresh();
159
160 return true;
161 }
162 return false;
163 }
164
165 /*
166 * (non-Javadoc)
167 * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
168 */
169 @Override
170 public boolean isPageComplete() {
171 if(getConfigurator().isLocal()){
172 return true;
173 }else if(getConfigurator().isRemote()
174 && getConfigurator().getWebserviceUrl() != null
175 && getConfigurator().getWebserviceUrl().toString().endsWith("/")){
176 return true;
177 }else{
178 return false;
179 }
180 }
181
182 }