KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > ui > wizards > SessionImportPage1


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: SessionImportPage1.java 97 2006-09-18 17:14:42Z mho $
7  ******************************************************************************/

8 package com.mountainminds.eclemma.internal.ui.wizards;
9
10 import java.io.File JavaDoc;
11 import java.text.MessageFormat JavaDoc;
12 import java.util.Date JavaDoc;
13
14 import org.eclipse.core.runtime.CoreException;
15 import org.eclipse.jface.dialogs.IDialogSettings;
16 import org.eclipse.jface.viewers.ISelectionChangedListener;
17 import org.eclipse.jface.viewers.SelectionChangedEvent;
18 import org.eclipse.jface.wizard.WizardPage;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.events.ModifyEvent;
21 import org.eclipse.swt.events.ModifyListener;
22 import org.eclipse.swt.events.SelectionAdapter;
23 import org.eclipse.swt.events.SelectionEvent;
24 import org.eclipse.swt.layout.GridData;
25 import org.eclipse.swt.layout.GridLayout;
26 import org.eclipse.swt.widgets.Button;
27 import org.eclipse.swt.widgets.Combo;
28 import org.eclipse.swt.widgets.Composite;
29 import org.eclipse.swt.widgets.FileDialog;
30 import org.eclipse.swt.widgets.Group;
31 import org.eclipse.swt.widgets.Label;
32 import org.eclipse.swt.widgets.Text;
33
34 import com.mountainminds.eclemma.core.CoverageTools;
35 import com.mountainminds.eclemma.core.IClassFiles;
36 import com.mountainminds.eclemma.internal.ui.EclEmmaUIPlugin;
37 import com.mountainminds.eclemma.internal.ui.UIMessages;
38 import com.mountainminds.eclemma.internal.ui.viewers.ClassesViewer;
39
40 /**
41  * This wizard page allows selecting a coverage file and class path entries
42  * for import.
43  *
44  * @author Marc R. Hoffmann
45  * @version $Revision: 97 $
46  */

47 public class SessionImportPage1 extends WizardPage {
48   
49   private static final String JavaDoc ID = "SessionImportPage1"; //$NON-NLS-1$
50

51   private static final int LIST_HEIGHT = 120;
52   private static final int TEXT_FIELD_WIDTH = 250;
53   
54   private static final String JavaDoc STORE_PREFIX = ID + "."; //$NON-NLS-1$
55
private static final String JavaDoc STORE_FILES = STORE_PREFIX + "files"; //$NON-NLS-1$
56
private static final String JavaDoc STORE_CLASSES = STORE_PREFIX + "classes"; //$NON-NLS-1$
57
private static final String JavaDoc STORE_BINARIES = STORE_PREFIX + "binaries"; //$NON-NLS-1$
58
private static final String JavaDoc STORE_COPY = STORE_PREFIX + "copy"; //$NON-NLS-1$
59

60   private Text descriptiontext;
61   private Combo filecombo;
62   private ClassesViewer classesviewer;
63   private Button binariescheck;
64   private Button referenceradio;
65   private Button copyradio;
66
67   protected SessionImportPage1() {
68     super(ID);
69     setTitle(UIMessages.ImportSessionPage1_title);
70     setDescription(UIMessages.ImportSessionPage1_description);
71   }
72
73   public void createControl(Composite parent) {
74     initializeDialogUnits(parent);
75     parent = new Composite(parent, SWT.NONE);
76     parent.setLayout(new GridLayout(3, false));
77     new Label(parent, SWT.NONE).setText(UIMessages.ImportSessionPage1Description_label);
78     descriptiontext = new Text(parent, SWT.BORDER);
79     descriptiontext.addModifyListener(new ModifyListener() {
80       public void modifyText(ModifyEvent e) {
81         update();
82       }
83     });
84     GridData gd = new GridData(GridData.FILL_HORIZONTAL);
85     gd.horizontalSpan = 2;
86     descriptiontext.setLayoutData(gd);
87     new Label(parent, SWT.NONE).setText(UIMessages.ImportSessionPage1CoverageFile_label);
88     filecombo = new Combo(parent, SWT.BORDER);
89     filecombo.addModifyListener(new ModifyListener() {
90       public void modifyText(ModifyEvent e) {
91         update();
92       }
93     });
94     gd = new GridData(GridData.FILL_HORIZONTAL);
95     gd.widthHint = TEXT_FIELD_WIDTH;
96     filecombo.setLayoutData(gd);
97     Button browsebutton = new Button(parent, SWT.NONE);
98     browsebutton.setText(UIMessages.BrowseAction_label);
99     setButtonLayoutData(browsebutton);
100     browsebutton.addSelectionListener(new SelectionAdapter() {
101       public void widgetSelected(SelectionEvent e) {
102         openBrowseDialog();
103       }
104     });
105     classesviewer = new ClassesViewer(parent, SWT.BORDER);
106     try {
107       classesviewer.setInput(CoverageTools.getClassFiles());
108     } catch (CoreException e) {
109       EclEmmaUIPlugin.log(e);
110     }
111     classesviewer.addSelectionChangedListener(new ISelectionChangedListener() {
112       public void selectionChanged(SelectionChangedEvent event) {
113         update();
114       }
115     });
116     gd = new GridData(GridData.FILL_BOTH);
117     gd.horizontalSpan = 3;
118     gd.heightHint = LIST_HEIGHT;
119     classesviewer.getTable().setLayoutData(gd);
120     binariescheck = new Button(parent, SWT.CHECK);
121     binariescheck.setText(UIMessages.ImportSessionPage1Binaries_label);
122     binariescheck.addSelectionListener(new SelectionAdapter() {
123       public void widgetSelected(SelectionEvent e) {
124         classesviewer.setIncludeBinaries(binariescheck.getSelection());
125         update();
126       }
127     });
128     gd = new GridData();
129     gd.horizontalSpan = 3;
130     binariescheck.setLayoutData(gd);
131     Group group = new Group(parent, SWT.NONE);
132     group.setText(UIMessages.ImportSessionPage1ModeGroup_label);
133     gd = new GridData(GridData.FILL_HORIZONTAL);
134     gd.horizontalSpan = 3;
135     group.setLayoutData(gd);
136     group.setLayout(new GridLayout());
137     referenceradio = new Button(group, SWT.RADIO);
138     referenceradio.setText(UIMessages.ImportSessionPage1Reference_label);
139     copyradio = new Button(group, SWT.RADIO);
140     copyradio.setText(UIMessages.ImportSessionPage1Copy_label);
141     setControl(parent);
142     restoreWidgetValues();
143     update();
144   }
145
146   private void openBrowseDialog() {
147     FileDialog fd = new FileDialog(getShell(), SWT.OPEN);
148     fd.setText(UIMessages.ImportSessionPage1BrowseDialog_title);
149     fd.setFileName(filecombo.getText());
150     fd.setFilterExtensions(new String JavaDoc[] { "*.ec;*.es", "*.*"} ); //$NON-NLS-1$ //$NON-NLS-2$
151
String JavaDoc file = fd.open();
152     if (file != null) {
153       filecombo.setText(file);
154     }
155   }
156   
157   private void update() {
158     if (getSessionDescription().length() == 0) {
159       setMessage(UIMessages.ImportReportPage1NoDescription_message);
160       setPageComplete(false);
161       return;
162     }
163     File JavaDoc cf = new File JavaDoc(getCoverageFile());
164     if (!cf.exists() || !cf.isFile()) {
165       setMessage(UIMessages.ImportReportPage1NoCoverageFile_message);
166       setPageComplete(false);
167       return;
168     }
169     if (getClassFiles().length == 0) {
170       setMessage(UIMessages.ImportReportPage1NoClassFiles_message);
171       setPageComplete(false);
172       return;
173     }
174     setErrorMessage(null);
175     setMessage(null);
176     setPageComplete(true);
177   }
178   
179   protected void restoreWidgetValues() {
180     String JavaDoc descr = UIMessages.ImportSessionPage1Description_value;
181     Object JavaDoc[] arg = new Object JavaDoc[] { new Date JavaDoc() };
182     descriptiontext.setText(MessageFormat.format(descr, arg));
183     IDialogSettings settings = getDialogSettings();
184     ComboHistory.restore(settings, STORE_FILES, filecombo);
185     boolean binaries = settings.getBoolean(STORE_BINARIES);
186     classesviewer.setIncludeBinaries(binaries);
187     binariescheck.setSelection(binaries);
188     String JavaDoc[] classes = settings.getArray(STORE_CLASSES);
189     if (classes != null) {
190       classesviewer.setSelectedClasses(classes);
191     }
192     boolean copy = settings.getBoolean(STORE_COPY);
193     referenceradio.setSelection(!copy);
194     copyradio.setSelection(copy);
195   }
196   
197   public void saveWidgetValues() {
198     IDialogSettings settings = getDialogSettings();
199     ComboHistory.save(settings, STORE_FILES, filecombo);
200     settings.put(STORE_CLASSES, classesviewer.getSelectedClassesLocations());
201     settings.put(STORE_BINARIES, binariescheck.getSelection());
202     settings.put(STORE_COPY, copyradio.getSelection());
203   }
204   
205   public String JavaDoc getSessionDescription() {
206     return descriptiontext.getText().trim();
207   }
208
209   public String JavaDoc getCoverageFile() {
210     return filecombo.getText();
211   }
212
213   public IClassFiles[] getClassFiles() {
214     return classesviewer.getSelectedClasses();
215   }
216   
217   public boolean getCreateCopy() {
218     return copyradio.getSelection();
219   }
220   
221 }
222
Popular Tags