Package de.innovationgate.eclipse.wgadesigner.pages

Source Code of de.innovationgate.eclipse.wgadesigner.pages.LibraryContainerPage

/*******************************************************************************
* Copyright (c) 2009, 2010 Innovation Gate GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Innovation Gate GmbH - initial API and implementation
******************************************************************************/
package de.innovationgate.eclipse.wgadesigner.pages;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension;
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension2;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

import de.innovationgate.eclipse.utils.ui.model.BeanListTableModelContentProvider;
import de.innovationgate.eclipse.utils.ui.model.BeanListTableModelLabelProvider;
import de.innovationgate.eclipse.wgadesigner.WGADesignerPlugin;
import de.innovationgate.eclipse.wgadesigner.classpath.LibrarySet;
import de.innovationgate.eclipse.wgadesigner.classpath.WGALibrarySetContainer;
import de.innovationgate.wga.model.BeanListTableModel;

public class LibraryContainerPage extends WizardPage implements IClasspathContainerPage, IClasspathContainerPageExtension,  IClasspathContainerPageExtension2 {

  private IClasspathEntry _containerEntry;
  private Table _tabLibraries;
  private IClasspathEntry[] _currentEntries;

  public LibraryContainerPage() {
    super("WGA Developer Studio Libraries", "WGA Developer Studio Libraries", null);
    setPageComplete(false);
  }

  public LibraryContainerPage(String pageName, String title, ImageDescriptor titleImage) {
    super("WGA Developer Studio Libraries", "WGA Developer Studio Libraries", null);
    setPageComplete(false);
  }

  public boolean finish() {
    return true;
  }

  public IClasspathEntry getSelection() {
    return null;
  }

  public void setSelection(IClasspathEntry containerEntry) {
    _containerEntry = containerEntry;
  }

  public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    container.setLayout(layout);
   
    _tabLibraries = new Table(container, SWT.CHECK|SWT.READ_ONLY);
    GridData tabLayout = new GridData(GridData.FILL_BOTH);
    _tabLibraries.setLayoutData(tabLayout);
   
    _tabLibraries.addSelectionListener(new SelectionAdapter() {

      @Override
      public void widgetSelected(SelectionEvent e) {
        boolean itemsChecked = false;
        TableItem[] items = _tabLibraries.getItems();
        for (TableItem item : items) {
          if (item.getChecked()) {
            itemsChecked = true;           
            // check dependencies
            LibrarySet set = (LibrarySet) item.getData();
            if (set.getDependencies() != null) {
              for (String id : set.getDependencies()) {
                for (TableItem dependentItem : items) {
                  LibrarySet dependentSet = (LibrarySet) dependentItem.getData();
                  if (dependentSet.getId().equals(id)) {
                    dependentItem.setChecked(true);
                    dependentItem.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY));
                  }
                }
              }
            }                       
          } else {
            // deselect dependencies
            LibrarySet set = (LibrarySet) item.getData();
            if (set.getDependencies() != null) {
              for (String id : set.getDependencies()) {
                for (TableItem dependentItem : items) {
                  LibrarySet dependentSet = (LibrarySet) dependentItem.getData();
                  if (dependentSet.getId().equals(id)) {
                    dependentItem.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));                   
                  }
                }
              }
            }   
          }
        }
        setPageComplete(itemsChecked);
      }
     
    });

        TableViewer viewer = new TableViewer(_tabLibraries);
       
        List<LibrarySet> librarySets = new ArrayList<LibrarySet>(WGADesignerPlugin.getDefault().getLibrarySets().values());
       
        Iterator<LibrarySet> setIt = librarySets.iterator();
        while (setIt.hasNext()) {
          String id = setIt.next().getId();
          IPath currentSetPath = new Path(WGALibrarySetContainer.ID).append(id);
          if (_currentEntries != null) {
            // check if id is already in classpathentries
            for (IClasspathEntry entry : _currentEntries) {
              if (entry.getPath().equals(currentSetPath)) {
                setIt.remove();
              }
            }
          }
        }
       
        Collections.sort(librarySets, new Comparator<LibrarySet>() {

      public int compare(LibrarySet o1, LibrarySet o2) {
        return o1.getName().compareTo(o2.getName());
      }
         
        });
       
        BeanListTableModel<LibrarySet> model = new BeanListTableModel<LibrarySet>(librarySets) {

      @Override
      public int getColumnCount() {
        return 1;
      }

      @Override
      public String getColumnText(LibrarySet bean, int column) {
        return bean.getName();
      }

      @Override
      public Object getColumnValue(LibrarySet bean, int column) {
        return bean.getName();
      }

      @Override
      public boolean isColumnEditable(LibrarySet bean, int column) {
        return false;
      }

      @Override
      public void setColumnValue(LibrarySet bean, int column, Object value) {       
      }
         
        };
       
        viewer.setContentProvider(new BeanListTableModelContentProvider());
        viewer.setLabelProvider(new BeanListTableModelLabelProvider(model));
        viewer.setInput(model);         
       
    setControl(container);
  }

  public IClasspathEntry[] getNewContainers() {
    List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
    IPath containerPath = new Path(WGALibrarySetContainer.ID)
    TableItem[] items = _tabLibraries.getItems();
    for (TableItem item : items) {
      if (item.getChecked()) {
        LibrarySet librarySet = (LibrarySet) item.getData();
        entries.add(JavaCore.newContainerEntry(containerPath.append(librarySet.getId())));
      }
    }             
    return entries.toArray(new IClasspathEntry[0]);
  }

  public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) {
    _currentEntries = currentEntries;   
  }



}
TOP

Related Classes of de.innovationgate.eclipse.wgadesigner.pages.LibraryContainerPage

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.