protected void handleAdd() {
    ElementListSelectionDialog dialog =
        new ElementListSelectionDialog(getShell(), new StyledBundleLabelProvider(false, false));

    try {
      dialog.setElements(getValidBundles());
    } catch (CoreException e) {
      dialog.setMessage(e.getMessage());
    }

    dialog.setTitle(PDEUIMessages.PluginSelectionDialog_title);
    dialog.setMessage(PDEUIMessages.PluginSelectionDialog_message);
    dialog.setMultipleSelection(true);
    if (dialog.open() == Window.OK) {

      Object[] models = dialog.getResult();
      ArrayList<NameVersionDescriptor> pluginsToAdd = new ArrayList<NameVersionDescriptor>();
      for (int i = 0; i < models.length; i++) {
        BundleInfo desc = ((BundleInfo) models[i]);
        pluginsToAdd.add(new NameVersionDescriptor(desc.getSymbolicName(), null));
      }
      Set<NameVersionDescriptor> allDependencies = new HashSet<NameVersionDescriptor>();
      allDependencies.addAll(pluginsToAdd);
      NameVersionDescriptor[] currentBundles = getTargetDefinition().getImplicitDependencies();
      if (currentBundles != null) {
        allDependencies.addAll(Arrays.asList(currentBundles));
      }
      getTargetDefinition()
          .setImplicitDependencies(
              allDependencies.toArray(new NameVersionDescriptor[allDependencies.size()]));
      fElementViewer.refresh();
      updateImpButtons();
    }
  }
  private void sort(int column) {
    if (table.getItemCount() <= 1) return;

    TableItem[] items = table.getItems();
    String[][] data = new String[items.length][table.getColumnCount()];
    for (int i = 0; i < items.length; i++) {
      for (int j = 0; j < table.getColumnCount(); j++) {
        data[i][j] = items[i].getText(j);
      }
    }

    Arrays.sort(data, new RowComparator(column));

    if (lastSortColumn != column) {
      table.setSortColumn(table.getColumn(column));
      table.setSortDirection(SWT.DOWN);
      for (int i = 0; i < data.length; i++) {
        items[i].setText(data[i]);
      }
      lastSortColumn = column;
    } else {
      // reverse order if the current column is selected again
      table.setSortDirection(SWT.UP);
      int j = data.length - 1;
      for (int i = 0; i < data.length; i++) {
        items[i].setText(data[j--]);
      }
      lastSortColumn = -1;
    }
  }
  public Menu getMenu(Control parent) {
    XMLPlugin plugin = XMLPlugin.getDefault();
    Menu menu = new Menu(parent);
    addActionToMenu(menu, new SelectMatcherAction(XMLStructureCreator.USE_UNORDERED, fViewer));
    addActionToMenu(menu, new SelectMatcherAction(XMLStructureCreator.USE_ORDERED, fViewer));
    new MenuItem(menu, SWT.SEPARATOR);
    HashMap IdMaps = plugin.getIdMaps();
    HashMap IdMapsInternal = plugin.getIdMapsInternal();

    Set keySetIdMaps = IdMaps.keySet();
    Set keySetIdMapsInternal = IdMapsInternal.keySet();
    ArrayList internalIdMapsAL = new ArrayList();
    for (Iterator iter_internal = keySetIdMapsInternal.iterator(); iter_internal.hasNext(); ) {
      String idmap_name = (String) iter_internal.next();
      internalIdMapsAL.add(idmap_name);
    }
    Object[] internalIdMapsA = internalIdMapsAL.toArray();
    Arrays.sort(internalIdMapsA);
    for (int i = 0; i < internalIdMapsA.length; i++) {
      addActionToMenu(menu, new SelectMatcherAction((String) internalIdMapsA[i], fViewer));
    }
    new MenuItem(menu, SWT.SEPARATOR);

    ArrayList userIdMapsAL = new ArrayList();
    for (Iterator iter_idmaps = keySetIdMaps.iterator(); iter_idmaps.hasNext(); ) {
      String idmap_name = (String) iter_idmaps.next();
      userIdMapsAL.add(idmap_name);
    }

    HashMap OrderedElements = plugin.getOrderedElements();
    Set keySetOrdered = OrderedElements.keySet();
    for (Iterator iter_orderedElements = keySetOrdered.iterator();
        iter_orderedElements.hasNext(); ) {
      String idmap_name = (String) iter_orderedElements.next();
      if (!keySetIdMaps.contains(idmap_name)) {
        userIdMapsAL.add(idmap_name);
      }
    }

    Object[] userIdMapsA = userIdMapsAL.toArray();
    Arrays.sort(userIdMapsA);
    for (int i = 0; i < userIdMapsA.length; i++) {
      addActionToMenu(menu, new SelectMatcherAction((String) userIdMapsA[i], fViewer));
    }

    return menu;
  }
    public Object[] getElements(Object inputElement) {
      if (inputElement instanceof ITargetDefinition) {
        List result = new ArrayList();

        // Check if there are any errors for missing features/bundles to display
        if (fMissing == null) {
          fMissing = new ArrayList();
        } else {
          fMissing.clear();
        }
        IResolvedBundle[] bundles = fTargetDefinition.getBundles();
        for (int i = 0; i < bundles.length; i++) {
          if (!bundles[i].getStatus().isOK()) {
            fMissing.add(bundles[i]);
            result.add(bundles[i]);
          }
        }

        if (fFeaureModeButton.getSelection()) {
          IFeatureModel[] features = fTargetDefinition.getAllFeatures();
          result.addAll(Arrays.asList(features));

          // Check if we need the other category
          if (((TargetDefinition) fTargetDefinition).getOtherBundles().length > 0) {
            result.add(OTHER_CATEGORY);
          }
        } else if (fGrouping == GROUP_BY_CONTAINER) {
          result.addAll(Arrays.asList(fTargetDefinition.getBundleContainers()));
        } else if (fGrouping == GROUP_BY_NONE) {
          // Missing bundles are already handled by adding to fMissing, avoid adding twice
          IResolvedBundle[] allBundles = fTargetDefinition.getAllBundles();
          for (int i = 0; i < allBundles.length; i++) {
            if (allBundles[i].getStatus().isOK()) {
              result.add(allBundles[i]);
            }
          }
        } else {
          result.addAll(Arrays.asList(getFileBundleMapping().keySet().toArray()));
        }

        return result.toArray();
      }
      return new Object[] {inputElement};
    }
 public void setFiles(String[] fileNames) {
   int size = Arrays.asList(fileNames).size();
   Vector iFileNames = new Vector();
   for (int i = 0; i < size; i++) {
     IResource resource = workspaceRoot.findMember(fileNames[i]);
     if (resource instanceof IFile) iFileNames.addElement(resource);
   }
   IFile[] dummyArray = new IFile[iFileNames.size()];
   this.fileNames = (IFile[]) (iFileNames.toArray(dummyArray));
 }
 private void handleRemove() {
   LinkedList<NameVersionDescriptor> bundles = new LinkedList<NameVersionDescriptor>();
   bundles.addAll(Arrays.asList(getTargetDefinition().getImplicitDependencies()));
   Object[] removeBundles = ((IStructuredSelection) fElementViewer.getSelection()).toArray();
   if (removeBundles.length > 0) {
     for (int i = 0; i < removeBundles.length; i++) {
       if (removeBundles[i] instanceof NameVersionDescriptor) {
         bundles.remove(removeBundles[i]);
       }
     }
     getTargetDefinition()
         .setImplicitDependencies(bundles.toArray((new NameVersionDescriptor[bundles.size()])));
     fElementViewer.refresh();
     updateImpButtons();
   }
 }
  private void sort(int column) {
    if (table.getItemCount() <= 1) return;

    TableItem[] items = table.getItems();
    String[][] data = new String[items.length][table.getColumnCount()];
    for (int i = 0; i < items.length; i++) {
      for (int j = 0; j < table.getColumnCount(); j++) {
        data[i][j] = items[i].getText(j);
      }
    }

    Arrays.sort(data, new RowComparator(column));

    for (int i = 0; i < data.length; i++) {
      items[i].setText(data[i]);
    }
  }
Beispiel #8
0
  public void fill(Menu menu, int index) {
    final IFileRevision fileRevision = getFileRevision();
    if (fileRevision == null) {
      return;
    }

    IEditorDescriptor defaultTextEditor =
        registry.findEditor("org.eclipse.ui.DefaultTextEditor"); // $NON-NLS-1$
    IEditorDescriptor preferredEditor = Utils.getDefaultEditor(fileRevision);

    Object[] editors = Utils.getEditors(fileRevision);
    Collections.sort(Arrays.asList(editors), comparer);
    boolean defaultFound = false;

    // Check that we don't add it twice. This is possible
    // if the same editor goes to two mappings.
    ArrayList alreadyMapped = new ArrayList();

    for (int i = 0; i < editors.length; i++) {
      IEditorDescriptor editor = (IEditorDescriptor) editors[i];
      if (!alreadyMapped.contains(editor)) {
        createMenuItem(menu, editor, preferredEditor);
        if (defaultTextEditor != null && editor.getId().equals(defaultTextEditor.getId())) {
          defaultFound = true;
        }
        alreadyMapped.add(editor);
      }
    }

    // Only add a separator if there is something to separate
    if (editors.length > 0) {
      new MenuItem(menu, SWT.SEPARATOR);
    }

    // Add default editor. Check it if it is saved as the preference.
    if (!defaultFound && defaultTextEditor != null) {
      createMenuItem(menu, defaultTextEditor, preferredEditor);
    }

    // TODO : We might perhaps enable inplace and system external editors menu items
    /*// Add system editor
    IEditorDescriptor descriptor = registry
    		.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
    final MenuItem systemEditorMenuItem = createMenuItem(menu, descriptor,
    		preferredEditor);
    systemEditorMenuItem.setEnabled(false);

    // Add system in-place editor
    descriptor = registry
    		.findEditor(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID);

    final MenuItem inPlaceEditorMenuItem = (descriptor != null) ? createMenuItem(
    		menu, descriptor, preferredEditor)
    		: null;
    if (inPlaceEditorMenuItem != null)
    	inPlaceEditorMenuItem.setEnabled(false);

    Job job = new Job("updateOpenWithMenu") { //$NON-NLS-1$
    	protected IStatus run(IProgressMonitor monitor) {
    		try {
    			final boolean isFile = fileRevision.getStorage(monitor) instanceof IFile;
    			Display.getDefault().asyncExec(new Runnable() {
    				public void run() {
    					if (inPlaceEditorMenuItem != null
    							&& !inPlaceEditorMenuItem.isDisposed())
    						inPlaceEditorMenuItem.setEnabled(isFile);
    					if (!systemEditorMenuItem.isDisposed())
    						systemEditorMenuItem.setEnabled(isFile);
    				}
    			});
    			return Status.OK_STATUS;
    		} catch (CoreException e) {
    			return new Status(IStatus.WARNING, TeamUIPlugin.ID, null, e);
    		}
    	};
    };
    job.setSystem(true);
    job.schedule();*/

    createDefaultMenuItem(menu, fileRevision);

    // add Other... menu item
    createOtherMenuItem(menu);
  }
  private void openAddressBook() {
    FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);

    fileDialog.setFilterExtensions(new String[] {"*.adr;", "*.*"});
    fileDialog.setFilterNames(
        new String[] {
          resAddressBook.getString("Book_filter_name") + " (*.adr)",
          resAddressBook.getString("All_filter_name") + " (*.*)"
        });
    String name = fileDialog.open();

    if (name == null) return;
    File file = new File(name);
    if (!file.exists()) {
      displayError(
          resAddressBook.getString("File")
              + file.getName()
              + " "
              + resAddressBook.getString("Does_not_exist"));
      return;
    }

    Cursor waitCursor = shell.getDisplay().getSystemCursor(SWT.CURSOR_WAIT);
    shell.setCursor(waitCursor);

    FileReader fileReader = null;
    BufferedReader bufferedReader = null;
    String[] data = new String[0];
    try {
      fileReader = new FileReader(file.getAbsolutePath());
      bufferedReader = new BufferedReader(fileReader);
      String nextLine = bufferedReader.readLine();
      while (nextLine != null) {
        String[] newData = new String[data.length + 1];
        System.arraycopy(data, 0, newData, 0, data.length);
        newData[data.length] = nextLine;
        data = newData;
        nextLine = bufferedReader.readLine();
      }
    } catch (FileNotFoundException e) {
      displayError(resAddressBook.getString("File_not_found") + "\n" + file.getName());
      return;
    } catch (IOException e) {
      displayError(resAddressBook.getString("IO_error_read") + "\n" + file.getName());
      return;
    } finally {

      shell.setCursor(null);

      if (fileReader != null) {
        try {
          fileReader.close();
        } catch (IOException e) {
          displayError(resAddressBook.getString("IO_error_close") + "\n" + file.getName());
          return;
        }
      }
    }

    String[][] tableInfo = new String[data.length][table.getColumnCount()];
    int writeIndex = 0;
    for (int i = 0; i < data.length; i++) {
      String[] line = decodeLine(data[i]);
      if (line != null) tableInfo[writeIndex++] = line;
    }
    if (writeIndex != data.length) {
      String[][] result = new String[writeIndex][table.getColumnCount()];
      System.arraycopy(tableInfo, 0, result, 0, writeIndex);
      tableInfo = result;
    }
    Arrays.sort(tableInfo, new RowComparator(0));

    for (int i = 0; i < tableInfo.length; i++) {
      TableItem item = new TableItem(table, SWT.NONE);
      item.setText(tableInfo[i]);
    }
    shell.setText(resAddressBook.getString("Title_bar") + fileDialog.getFileName());
    isModified = false;
    this.file = file;
  }
  private void openAddressBook(String name) {
    if (name == null) return;
    File file = new File(name);
    if (!file.exists()) {
      displayError(
          resMessages.getString("File")
              + file.getName()
              + " "
              + resMessages.getString("Does_not_exist"));
      return;
    }

    Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
    shell.setCursor(waitCursor);

    FileReader fileReader = null;
    BufferedReader bufferedReader = null;
    String[] data = new String[0];
    try {
      fileReader = new FileReader(file.getAbsolutePath());
      bufferedReader = new BufferedReader(fileReader);
      String nextLine = bufferedReader.readLine();
      while (nextLine != null) {
        String[] newData = new String[data.length + 1];
        System.arraycopy(data, 0, newData, 0, data.length);
        newData[data.length] = nextLine;
        data = newData;
        nextLine = bufferedReader.readLine();
      }
    } catch (FileNotFoundException e) {
      displayError(resMessages.getString("File_not_found") + "\n" + file.getName());
      return;
    } catch (IOException e) {
      displayError(resMessages.getString("IO_error_read") + "\n" + file.getName());
      return;
    } finally {

      shell.setCursor(null);
      waitCursor.dispose();

      if (fileReader != null) {
        try {
          fileReader.close();
        } catch (IOException e) {
          displayError(resMessages.getString("IO_error_close") + "\n" + file.getName());
          return;
        }
      }
    }

    String[][] tableInfo = new String[data.length][table.getColumnCount()];
    for (int i = 0; i < data.length; i++) {
      tableInfo[i] = decodeLine(data[i]);
    }

    Arrays.sort(tableInfo, new RowComparator(0));

    for (int i = 0; i < tableInfo.length; i++) {
      TableItem item = new TableItem(table, SWT.NONE);
      item.setText(tableInfo[i]);
    }
    shell.setText(resMessages.getString("Title_bar") + file.getName());
    isModified = false;
    this.file = file;
  }