Package org.objectstyle.wolips.componenteditor.outline

Source Code of org.objectstyle.wolips.componenteditor.outline.ComponentEditorOutline

/*
* ====================================================================
*
* The ObjectStyle Group Software License, Version 1.0
*
* Copyright (c) 2005 The ObjectStyle Group and individual authors of the
* software. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: 1.
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. 2. Redistributions in
* binary form must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution. 3. The end-user documentation
* included with the redistribution, if any, must include the following
* acknowlegement: "This product includes software developed by the ObjectStyle
* Group (http://objectstyle.org/)." Alternately, this acknowlegement may
* appear in the software itself, if and wherever such third-party
* acknowlegements normally appear. 4. The names "ObjectStyle Group" and
* "Cayenne" must not be used to endorse or promote products derived from this
* software without prior written permission. For written permission, please
* contact andrus@objectstyle.org. 5. Products derived from this software may
* not be called "ObjectStyle" nor may "ObjectStyle" appear in their names
* without prior written permission of the ObjectStyle Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* OBJECTSTYLE GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the ObjectStyle Group. For more information on the ObjectStyle
* Group, please see <http://objectstyle.org/> .
*/
package org.objectstyle.wolips.componenteditor.outline;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.part.Page;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;

/**
* @author uli
*/
public class ComponentEditorOutline extends Page implements IContentOutlinePage, ISelectionProvider, ISelectionChangedListener {
  private PageBook pagebook;

  private IContentOutlinePage currentPage;

  private IContentOutlinePage emptyPage;

  private IActionBars actionBars;

  private IMenuManager menuManager;

  private IToolBarManager toolBarManager;

  private IStatusLineManager statusLineManager;

  private ISelection selection;

  private List<ISelectionChangedListener> listeners;

  public ComponentEditorOutline() {
    super();
    listeners = new ArrayList<ISelectionChangedListener>();
  }

  public void createControl(Composite parent) {
    pagebook = new PageBook(parent, SWT.NONE);
  }

  public void dispose() {
    if (pagebook != null && !pagebook.isDisposed())
      pagebook.dispose();
    pagebook = null;
    listeners = null;
  }

  public boolean isDisposed() {
    return listeners == null;
  }

  public Control getControl() {
    return pagebook;
  }

  public PageBook getPagebook() {
    return pagebook;
  }

  public void addSelectionChangedListener(ISelectionChangedListener listener) {
    if (listeners != null) {
      listeners.add(listener);
    }
  }

  public ISelection getSelection() {
    return selection;
  }

  public void removeSelectionChangedListener(ISelectionChangedListener listener) {
    if (listeners != null) {
      listeners.remove(listener);
    }
  }

  public void selectionChanged(SelectionChangedEvent event) {
    setSelection(event.getSelection());
  }

  public void setSelection(ISelection selection) {
    this.selection = selection;
    if (listeners == null)
      return;
    SelectionChangedEvent e = new SelectionChangedEvent(this, selection);
    for (int i = 0; i < listeners.size(); i++) {
      listeners.get(i).selectionChanged(e);
    }
  }

  public void makeContributions(IMenuManager newMenuManager, IToolBarManager newToolBarManager, IStatusLineManager newStatusLineManager) {
    this.menuManager = newMenuManager;
    this.toolBarManager = newToolBarManager;
    this.statusLineManager = newStatusLineManager;
  }

  public void setActionBars(IActionBars actionBars) {
    this.actionBars = actionBars;
    if (currentPage != null)
      setPageActive(currentPage);

  }

  public IActionBars getActionBars() {
    return actionBars;
  }

  public void setFocus() {
    if (currentPage != null)
      currentPage.setFocus();
  }

  private IContentOutlinePage getEmptyPage() {
    if (emptyPage == null)
      emptyPage = new EmptyOutlinePage();
    return emptyPage;
  }

  public void setPageActive(IContentOutlinePage contentOutlinePage) {
    IContentOutlinePage page = contentOutlinePage;
    if (page == null) {
      page = getEmptyPage();
    }
    if (currentPage != null) {
      currentPage.removeSelectionChangedListener(this);
    }
    page.addSelectionChangedListener(this);
    this.currentPage = page;
    if (pagebook == null) {
      // still not being made
      return;
    }
    Control control = page.getControl();
    if (control == null || control.isDisposed()) {
      if (page instanceof Page) {
        ((Page) page).init(this.getSite());
      }
      page.setActionBars(getActionBars());
      page.createControl(pagebook);
      control = page.getControl();
      if (page instanceof Page) {
        ((Page) page).makeContributions(menuManager, toolBarManager, statusLineManager);
      }
    }
    pagebook.showPage(control);
    this.currentPage = page;
  }

}
TOP

Related Classes of org.objectstyle.wolips.componenteditor.outline.ComponentEditorOutline

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.