1 8 package com.mountainminds.eclemma.internal.ui.wizards; 9 10 import java.io.File ; 11 import java.text.MessageFormat ; 12 import java.util.Date ; 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 47 public class SessionImportPage1 extends WizardPage { 48 49 private static final String ID = "SessionImportPage1"; 51 private static final int LIST_HEIGHT = 120; 52 private static final int TEXT_FIELD_WIDTH = 250; 53 54 private static final String STORE_PREFIX = ID + "."; private static final String STORE_FILES = STORE_PREFIX + "files"; private static final String STORE_CLASSES = STORE_PREFIX + "classes"; private static final String STORE_BINARIES = STORE_PREFIX + "binaries"; private static final String STORE_COPY = STORE_PREFIX + "copy"; 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 [] { "*.ec;*.es", "*.*"} ); String 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 cf = new File (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 descr = UIMessages.ImportSessionPage1Description_value; 181 Object [] arg = new Object [] { new Date () }; 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 [] 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 getSessionDescription() { 206 return descriptiontext.getText().trim(); 207 } 208 209 public String 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 |