Changeset 1151
- Timestamp:
- 05/02/08 01:43:47 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/descent.ui/src/descent/internal/ui/preferences/FileImportBlock.java
r1150 r1151 2 2 3 3 import java.io.File; 4 import java.util.ArrayList; 5 import java.util.List; 4 6 5 7 import org.eclipse.core.resources.IProject; 8 import org.eclipse.jface.resource.ImageDescriptor; 9 import org.eclipse.jface.viewers.DoubleClickEvent; 10 import org.eclipse.jface.viewers.IDoubleClickListener; 11 import org.eclipse.jface.viewers.ISelectionChangedListener; 12 import org.eclipse.jface.viewers.IStructuredContentProvider; 13 import org.eclipse.jface.viewers.IStructuredSelection; 6 14 import org.eclipse.jface.viewers.LabelProvider; 15 import org.eclipse.jface.viewers.SelectionChangedEvent; 16 import org.eclipse.jface.viewers.StructuredSelection; 17 import org.eclipse.jface.viewers.TableViewer; 18 import org.eclipse.jface.viewers.Viewer; 19 import org.eclipse.jface.viewers.ViewerSorter; 7 20 import org.eclipse.swt.SWT; 8 21 import org.eclipse.swt.events.SelectionEvent; … … 14 27 import org.eclipse.swt.widgets.Composite; 15 28 import org.eclipse.swt.widgets.Control; 16 import org.eclipse.swt.widgets.Group; 29 import org.eclipse.swt.widgets.DirectoryDialog; 30 import org.eclipse.swt.widgets.Table; 31 import org.eclipse.ui.ISharedImages; 17 32 import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; 18 33 34 import descent.internal.ui.JavaPlugin; 19 35 import descent.internal.ui.util.PixelConverter; 20 36 import descent.internal.ui.util.SWTUtil; 37 import descent.internal.ui.viewsupport.ImageDescriptorRegistry; 38 import descent.internal.ui.viewsupport.JavaElementImageProvider; 21 39 import descent.internal.ui.wizards.IStatusChangeListener; 40 import descent.ui.JavaElementImageDescriptor; 22 41 23 42 public class FileImportBlock extends OptionsConfigurationBlock … … 28 47 }; 29 48 49 private class FileImportContentProvider implements IStructuredContentProvider 50 { 51 public Object[] getElements(Object inputElement) 52 { 53 return fList.toArray(new File[fList.size()]); 54 } 55 56 public void dispose() 57 { 58 // Do nothing 59 } 60 61 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) 62 { 63 // Do nothing 64 } 65 } 66 30 67 private static class FileImportLabelProvider extends LabelProvider 31 68 { 32 // TODO these images -- a folder and a folder with an X 33 private static Image ICON_FOLDER = null; 34 private static Image ICON_FOLDER_NOT_FOUND = null; 69 private final Image ICON_FOLDER; 70 private final Image ICON_FOLDER_NOT_FOUND; 71 72 FileImportLabelProvider() 73 { 74 ImageDescriptorRegistry registry = JavaPlugin.getImageDescriptorRegistry(); 75 ISharedImages shared = JavaPlugin.getDefault().getWorkbench().getSharedImages(); 76 77 ICON_FOLDER = shared.getImage(ISharedImages.IMG_OBJ_FOLDER); 78 79 ImageDescriptor base = shared.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER); 80 JavaElementImageDescriptor descriptor = new JavaElementImageDescriptor( 81 base, JavaElementImageDescriptor.ERROR, 82 JavaElementImageProvider.SMALL_SIZE); 83 ICON_FOLDER_NOT_FOUND = registry.get(descriptor); 84 } 35 85 36 86 public Image getImage(Object element) 37 87 { 38 if(null == element || !(element instanceof File))39 throw new IllegalArgumentException("Expected a non-null java.io.File");40 41 88 File file = (File) element; 42 89 if(file.exists() && file.isDirectory()) … … 47 94 48 95 public String getText(Object element) 49 { 50 if(null == element || !(element instanceof File)) 51 throw new IllegalArgumentException("Expected a non-null java.io.File"); 52 96 { 53 97 File file = (File) element; 54 98 return file.getAbsolutePath(); 55 99 } 56 100 } 57 101 102 private static class FileImportSorter extends ViewerSorter 103 { 104 @Override 105 public int compare(Viewer viewer, Object e1, Object e2) 106 { 107 File f1 = (File) e1; 108 File f2 = (File) e2; 109 110 return collator.compare(f1.getAbsolutePath(), f2.getAbsolutePath()); 111 } 112 } 113 114 private TableViewer fViewer; 58 115 private Button fNewButton; 59 116 private Button fEditButton; 60 117 private Button fRemoveButton; 118 private List<File> fList = new ArrayList<File>(); 61 119 62 120 public FileImportBlock(IStatusChangeListener context, … … 89 147 private void createListControl(Composite comp) 90 148 { 91 // TODO temp testing layout 92 Group tmp = new Group(comp, SWT.NONE); 149 class ListViewerListener implements ISelectionChangedListener, 150 IDoubleClickListener 151 { 152 public void selectionChanged(SelectionChangedEvent event) 153 { 154 updateEnablement(); 155 } 156 157 public void doubleClick(DoubleClickEvent event) 158 { 159 performEdit(); 160 } 161 } 162 163 Table table = new Table(comp, SWT.SINGLE | SWT.BORDER | SWT.SINGLE); 164 fViewer = new TableViewer(table); 165 93 166 GridData gd = new GridData(GridData.FILL_BOTH); 94 167 PixelConverter conv = new PixelConverter(comp); 95 168 gd.widthHint = conv.convertWidthInCharsToPixels(50); 96 tmp.setLayoutData(gd); 169 fViewer.getControl().setLayoutData(gd); 170 171 fViewer.setContentProvider(new FileImportContentProvider()); 172 fViewer.setLabelProvider(new FileImportLabelProvider()); 173 fViewer.setSorter(new FileImportSorter()); 174 fViewer.setInput(this); 175 176 ListViewerListener listener = new ListViewerListener(); 177 fViewer.addSelectionChangedListener(listener); 178 fViewer.addDoubleClickListener(listener); 97 179 } 98 180 … … 168 250 private File getSelectedElement() 169 251 { 170 return null; 252 IStructuredSelection selection = (IStructuredSelection) fViewer.getSelection(); 253 if(null != selection) 254 return (File) selection.getFirstElement(); 255 else 256 return null; 171 257 } 172 258 173 259 private void performNew() 174 260 { 175 // TODO 261 File file = selectFile(null); 262 if(null == file) 263 return; 264 if(fList.contains(file)) 265 return; 266 267 fList.add(file); 268 fViewer.refresh(); 269 fViewer.setSelection(new StructuredSelection(file)); 176 270 } 177 271 178 272 private void performEdit() 179 273 { 180 File file = getSelectedElement(); 274 File old = getSelectedElement(); 275 if(null == old) 276 return; 277 278 File file = selectFile(old); 181 279 if(null == file) 182 280 return; 183 184 // TODO 281 if(fList.contains(file)) 282 return; 283 284 fList.remove(old); 285 fList.add(file); 286 fViewer.refresh(); 287 fViewer.setSelection(new StructuredSelection(file)); 185 288 } 186 289 … … 191 294 return; 192 295 193 // TODO 296 fList.remove(file); 297 fViewer.setSelection(new StructuredSelection()); 298 fViewer.refresh(); 299 } 300 301 private File selectFile(File seed) 302 { 303 if(null != seed && (!seed.exists() || !seed.isDirectory())) 304 seed = null; 305 306 DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.NONE); 307 dialog.setText("Select path to search for file imports"); 308 dialog.setFilterPath(null == seed ? null : seed.getAbsolutePath()); 309 310 String path = dialog.open(); 311 return null == path ? null : new File(path); 194 312 } 195 313 trunk/descent.ui/src/descent/internal/ui/wizards/dialogfields/ListDialogField.java
r202 r1151 193 193 194 194 public void setTableColumns(ColumnsDescription column) { 195 fTableColumns= column;196 195 } 197 196
