Package com.onpositive.gae.tools

Source Code of com.onpositive.gae.tools.ProjectSelectionDialog

package com.onpositive.gae.tools;

import java.util.Set;

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jdt.core.IJavaModel;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
import org.eclipse.jdt.ui.JavaElementComparator;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jdt.ui.StandardJavaElementContentProvider;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.SelectionStatusDialog;

public class ProjectSelectionDialog extends SelectionStatusDialog {

  // the visual selection widget group
  private TableViewer fTableViewer;
  private Set fProjectsWithSpecifics;

  // sizing constants
  private final static int SIZING_SELECTION_WIDGET_HEIGHT= 250;
  private final static int SIZING_SELECTION_WIDGET_WIDTH= 300;

  private final static String DIALOG_SETTINGS_SHOW_ALL= "ProjectSelectionDialog.show_all"; //$NON-NLS-1$

  private ViewerFilter fFilter;
  private String description;
  private String title;

  public ProjectSelectionDialog(Shell parentShell, Set projectsWithSpecifics,String title,String description) {
    super(parentShell);
    fProjectsWithSpecifics= projectsWithSpecifics;
    this.title=title;
    this.description=description;
    setMessage(description);
    fFilter= new ViewerFilter() {
      public boolean select(Viewer viewer, Object parentElement, Object element) {
        return fProjectsWithSpecifics.contains(element);
      }
    };
  }


  /* (non-Javadoc)
   * Method declared on Dialog.
   */
  protected Control createDialogArea(Composite parent) {
    // page group
    Composite composite= (Composite) super.createDialogArea(parent);

    Font font= parent.getFont();
    composite.setFont(font);

    createMessageArea(composite);
    setMessage(description);
    getShell().setText(title);
   
    fTableViewer= new TableViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
      public void selectionChanged(SelectionChangedEvent event) {
        doSelectionChanged(((IStructuredSelection) event.getSelection()).toArray());
      }
    });
    fTableViewer.addDoubleClickListener(new IDoubleClickListener() {
      public void doubleClick(DoubleClickEvent event) {
                okPressed();
      }
    });
    GridData data= new GridData(SWT.FILL, SWT.FILL, true, true);
    data.heightHint= SIZING_SELECTION_WIDGET_HEIGHT;
    data.widthHint= SIZING_SELECTION_WIDGET_WIDTH;
    fTableViewer.getTable().setLayoutData(data);

    fTableViewer.setLabelProvider(new JavaElementLabelProvider());
    fTableViewer.setContentProvider(new StandardJavaElementContentProvider());
    fTableViewer.setComparator(new JavaElementComparator());
    fTableViewer.getControl().setFont(font);

//    Button checkbox= new Button(composite, SWT.CHECK);
//    checkbox.setText(PreferencesMessages.ProjectSelectionDialog_filter);
//    checkbox.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false));
//    checkbox.addSelectionListener(new SelectionListener() {
//      public void widgetSelected(SelectionEvent e) {
//        updateFilter(((Button) e.widget).getSelection());
//      }
//      public void widgetDefaultSelected(SelectionEvent e) {
//        updateFilter(((Button) e.widget).getSelection());
//      }
//    });
//    IDialogSettings dialogSettings= JavaPlugin.getDefault().getDialogSettings();
//    boolean doFilter= !dialogSettings.getBoolean(DIALOG_SETTINGS_SHOW_ALL) && !fProjectsWithSpecifics.isEmpty();
//    //checkbox.setSelection(doFilter);
    updateFilter(true);

    IJavaModel input= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot());
    fTableViewer.setInput(input);

    doSelectionChanged(new Object[0]);
    Dialog.applyDialogFont(composite);
    return composite;
  }

  protected void updateFilter(boolean selected) {
    if (selected) {
      fTableViewer.addFilter(fFilter);
    } else {
      fTableViewer.removeFilter(fFilter);
    }
    JavaPlugin.getDefault().getDialogSettings().put(DIALOG_SETTINGS_SHOW_ALL, !selected);
  }

  private void doSelectionChanged(Object[] objects) {
    if (objects.length != 1) {
      updateStatus(new StatusInfo(IStatus.ERROR, "")); //$NON-NLS-1$
      setSelectionResult(null);
    } else {
      updateStatus(new StatusInfo());
      setSelectionResult(objects);
    }
  }

  /* (non-Javadoc)
   * @see org.eclipse.ui.dialogs.SelectionStatusDialog#computeResult()
   */
  protected void computeResult() {
  }
}
TOP

Related Classes of com.onpositive.gae.tools.ProjectSelectionDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.