Package org.cfeclipse.cfml.views.packageview

Source Code of org.cfeclipse.cfml.views.packageview.PackageView$NameSorter

package org.cfeclipse.cfml.views.packageview;

import org.cfeclipse.cfml.util.CFPluginImages;
import org.cfeclipse.cfml.views.packageview.components.PackageViewTree;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;


/**
* This sample class demonstrates how to plug-in a new workbench view. The view
* shows data obtained from the model. The sample creates a dummy model on the
* fly, but a real implementation would connect to the model available either in
* this or another plug-in (e.g. the workspace). The view is connected to the
* model using a content provider.
* <p>
* The view uses a label provider to define how model objects should be
* presented in the view. Each view can present the same model objects using
* different labels and icons, if needed. Alternatively, a single label provider
* can be shared between views in order to ensure that objects of the same type
* are presented in the same way everywhere.
* <p>
*
* TODO: This PackageView will be re-modelled to display the current project's
* CFC's as a dot notated packages. With the help of a new parser, it should be
* able to parse all the CFC's and give us all the methods and method signatures
* On Save actions should trigger this view. (or whatever action the Java
* perspective uses to update the Package Explorer
*
* @author markd
* @author mike nimer
*/

public class PackageView extends ViewPart
{
    private PackageViewTree packageTreeView;
   
    private Composite localCFCServices;
    private ToolBarManager toolBarManager;
    private Action acRemoteCFCFilterRemote;
    private Action acRemoteCFCFilterPublic;
    private Action acRemoteCFCFilterPackage;
    private Action acRemoteCFCFilterPrivate;   
    private Action acRefreshTree;
    public static final String ID_COMPONENTEXPLORER = "org.cfeclipse.cfml.views.packageview.PackageView";

    /*
     * The content provider class is responsible for providing objects to the
     * view. It can wrap existing objects in adapters or simply return objects
     * as-is. These objects may be sensitive to the current input of the view,
     * or ignore it and always show the same content (like Task List, for
     * example).
     */

    class NameSorter extends ViewerSorter
    {

        public int compare(Viewer viewer, Object e1, Object e2)
        {
            /*
             * if(e1 instanceof FolderNode && !(e2 instanceof FolderNode)) {
             * return -1; } else if(e2 instanceof FolderNode && !(e1 instanceof
             * FolderNode)) { return 1; }
             */
            return super.compare(viewer, e1, e2);
        }
    }

    /**
     * The constructor.
     */
    public PackageView()
    {}


    /**
     * This is a callback that will allow us to create the viewer and initialize
     * it.
     */
    public void createPartControl(Composite parent)
    {
        localCFCServices = new Composite(parent, SWT.NONE);
                       
        GridLayout layout = new GridLayout();
        layout.numColumns = 1;       
        localCFCServices.setLayout(layout);

        createPackageView(localCFCServices);

    }

  
    /**
     * create the remote CFC level view of the components
     * @param parent
     */
    private void createPackageView(Composite parent)
    {
       
        createViewToolbarAndActions(parent); //TODO: move this to the top of the view
      
       
        packageTreeView = new PackageViewTree(parent, getViewSite(), SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
        packageTreeView.addSelectionChangedListener(new ISelectionChangedListener()
        {
            public void selectionChanged(SelectionChangedEvent event)
            {
                //TreeObject node = (TreeObject) ((IStructuredSelection)event.getSelection()).getFirstElement();
            }
        });
       
        GridData gd = new GridData();
        gd.grabExcessHorizontalSpace = true;
        gd.grabExcessVerticalSpace = true;
        gd.horizontalAlignment = SWT.FILL;
        gd.verticalAlignment = SWT.FILL;
        packageTreeView.getTree().setLayoutData(gd);
        packageTreeView.setInput(getViewSite());
       
    }
   
   

   
    private void createViewToolbarAndActions(Composite parent)
    {
        IToolBarManager tbm = getToolBarManager(parent);
       
       
        acRemoteCFCFilterRemote = new Action()
        {
            public void run()
            {
                packageTreeView.doFilterRemote();
            }
        };
        acRemoteCFCFilterRemote.setText("Show Remote");
        acRemoteCFCFilterRemote.setToolTipText("Show Remote");
        acRemoteCFCFilterRemote.setImageDescriptor( ImageDescriptor.createFromImage( CFPluginImages.get(CFPluginImages.ICON_METHOD_REMOTE) ) );
       
       
        acRemoteCFCFilterPublic = new Action()
        {
            public void run()
            {
                packageTreeView.doFilterPublic();               
            }
        };
        acRemoteCFCFilterPublic.setText("Show Public");
        acRemoteCFCFilterPublic.setToolTipText("Show Public");
        acRemoteCFCFilterPublic.setImageDescriptor( ImageDescriptor.createFromImage( CFPluginImages.get(CFPluginImages.ICON_METHOD_PUBLIC) ) );
       
       
        acRemoteCFCFilterPackage = new Action()
        {
            public void run()
            {
                packageTreeView.doFilterPackage();
            }
        };
        acRemoteCFCFilterPackage.setText("Show Package");
        acRemoteCFCFilterPackage.setToolTipText("Show Package");
        acRemoteCFCFilterPackage.setImageDescriptor( ImageDescriptor.createFromImage( CFPluginImages.get(CFPluginImages.ICON_METHOD_PACKAGE) ) );
       
       
        acRemoteCFCFilterPrivate = new Action()
        {
            public void run()
            {
                packageTreeView.doFilterPrivate();
            }
        };
        acRemoteCFCFilterPrivate.setText("Show Private");
        acRemoteCFCFilterPrivate.setToolTipText("Show Private");
        acRemoteCFCFilterPrivate.setImageDescriptor( ImageDescriptor.createFromImage( CFPluginImages.get(CFPluginImages.ICON_METHOD_PRIVATE) ) );
       
        acRefreshTree = new Action()
        {
            public void run()
            {
              packageTreeView.refresh();
           
        };
        acRefreshTree.setText("Refresh View");
        acRefreshTree.setToolTipText("Refresh the Component Tree");
        acRefreshTree.setImageDescriptor(CFPluginImages.getImageRegistry().getDescriptor(CFPluginImages.ICON_REFRESH));

       
       
       
        tbm.add(acRemoteCFCFilterRemote);
        tbm.add(acRemoteCFCFilterPublic);
        tbm.add(acRemoteCFCFilterPackage);
        tbm.add(acRemoteCFCFilterPrivate);
        tbm.add(acRefreshTree);
 
        // this forces the toolbar to get the actions that we just added. 
        // I think it should do it by default, (and it took me like 2 days to figure this one
        // method call out) but...  (stupid eclipse)
        tbm.update(true);
    }

   
    /**
     * Returns the tool bar manager that is used to manage tool items in the
     * form's title area (where you can add and delete forms).
     *
     * @return form tool bar manager
     */
    protected IToolBarManager getToolBarManager(Composite parent)
    {
        if (toolBarManager == null)
        {
            toolBarManager = new ToolBarManager(SWT.FLAT);
            //ToolBar toolbar =
            toolBarManager.createControl(parent);
//               toolbar.setBackground(getBackground());
//               toolbar.setForeground(getForeground());
//               toolbar.setCursor(FormsResources.getHandCursor());

            parent.addDisposeListener(new DisposeListener() {
                public void widgetDisposed(DisposeEvent e) {
                    if (toolBarManager != null) {
                     
                        toolBarManager.dispose();
                        toolBarManager = null;
                    }
                }
            });
        }
       return toolBarManager;
    }
   

      
   
    /**
     * Passing the focus request to the viewer's control.
     */
    public void setFocus()
    {
        packageTreeView.getControl().setFocus();
    }
}
TOP

Related Classes of org.cfeclipse.cfml.views.packageview.PackageView$NameSorter

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.