Changeset 1151

Show
Ignore:
Timestamp:
05/02/08 01:43:47 (4 months ago)
Author:
fraserofthenight
Message:

Finished up most of the UI stuff

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/descent.ui/src/descent/internal/ui/preferences/FileImportBlock.java

    r1150 r1151  
    22 
    33import java.io.File; 
     4import java.util.ArrayList; 
     5import java.util.List; 
    46 
    57import org.eclipse.core.resources.IProject; 
     8import org.eclipse.jface.resource.ImageDescriptor; 
     9import org.eclipse.jface.viewers.DoubleClickEvent; 
     10import org.eclipse.jface.viewers.IDoubleClickListener; 
     11import org.eclipse.jface.viewers.ISelectionChangedListener; 
     12import org.eclipse.jface.viewers.IStructuredContentProvider; 
     13import org.eclipse.jface.viewers.IStructuredSelection; 
    614import org.eclipse.jface.viewers.LabelProvider; 
     15import org.eclipse.jface.viewers.SelectionChangedEvent; 
     16import org.eclipse.jface.viewers.StructuredSelection; 
     17import org.eclipse.jface.viewers.TableViewer; 
     18import org.eclipse.jface.viewers.Viewer; 
     19import org.eclipse.jface.viewers.ViewerSorter; 
    720import org.eclipse.swt.SWT; 
    821import org.eclipse.swt.events.SelectionEvent; 
     
    1427import org.eclipse.swt.widgets.Composite; 
    1528import org.eclipse.swt.widgets.Control; 
    16 import org.eclipse.swt.widgets.Group; 
     29import org.eclipse.swt.widgets.DirectoryDialog; 
     30import org.eclipse.swt.widgets.Table; 
     31import org.eclipse.ui.ISharedImages; 
    1732import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; 
    1833 
     34import descent.internal.ui.JavaPlugin; 
    1935import descent.internal.ui.util.PixelConverter; 
    2036import descent.internal.ui.util.SWTUtil; 
     37import descent.internal.ui.viewsupport.ImageDescriptorRegistry; 
     38import descent.internal.ui.viewsupport.JavaElementImageProvider; 
    2139import descent.internal.ui.wizards.IStatusChangeListener; 
     40import descent.ui.JavaElementImageDescriptor; 
    2241 
    2342public class FileImportBlock extends OptionsConfigurationBlock 
     
    2847    }; 
    2948     
     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     
    3067    private static class FileImportLabelProvider extends LabelProvider 
    3168    { 
    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        } 
    3585         
    3686        public Image getImage(Object element) 
    3787        { 
    38             if(null == element || !(element instanceof File)) 
    39                 throw new IllegalArgumentException("Expected a non-null java.io.File"); 
    40              
    4188            File file = (File) element; 
    4289            if(file.exists() && file.isDirectory()) 
     
    4794 
    4895        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        {  
    5397            File file = (File) element; 
    5498            return file.getAbsolutePath(); 
    5599        } 
    56100    } 
    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; 
    58115    private Button fNewButton; 
    59116    private Button fEditButton; 
    60117    private Button fRemoveButton; 
     118    private List<File> fList = new ArrayList<File>(); 
    61119     
    62120    public FileImportBlock(IStatusChangeListener context, 
     
    89147    private void createListControl(Composite comp) 
    90148    { 
    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         
    93166        GridData gd = new GridData(GridData.FILL_BOTH); 
    94167        PixelConverter conv = new PixelConverter(comp); 
    95168        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); 
    97179    } 
    98180     
     
    168250    private File getSelectedElement() 
    169251    { 
    170         return null; 
     252        IStructuredSelection selection = (IStructuredSelection) fViewer.getSelection(); 
     253        if(null != selection) 
     254            return (File) selection.getFirstElement(); 
     255        else 
     256            return null; 
    171257    } 
    172258     
    173259    private void performNew() 
    174260    { 
    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)); 
    176270    } 
    177271     
    178272    private void performEdit() 
    179273    { 
    180         File file = getSelectedElement(); 
     274        File old = getSelectedElement(); 
     275        if(null == old) 
     276            return; 
     277         
     278        File file = selectFile(old); 
    181279        if(null == file) 
    182280            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)); 
    185288    } 
    186289     
     
    191294            return; 
    192295         
    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); 
    194312    } 
    195313 
  • trunk/descent.ui/src/descent/internal/ui/wizards/dialogfields/ListDialogField.java

    r202 r1151  
    193193     
    194194    public void setTableColumns(ColumnsDescription column) { 
    195         fTableColumns= column; 
    196195    } 
    197196