Package rabbit.ui.internal

Source Code of rabbit.ui.internal.RabbitUI

/*
* Copyright 2010 The Rabbit Eclipse Plug-in Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package rabbit.ui.internal;

import rabbit.ui.IPage;
import rabbit.ui.internal.util.PageDescriptor;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

import java.util.Collection;
import java.util.Set;

/**
* The activator class controls the plug-in life cycle
*/
public class RabbitUI extends AbstractUIPlugin {

  // The plug-in ID
  public static final String PLUGIN_ID = "rabbit.ui";

  public static final String UI_PAGE_EXTENSION_ID = "rabbit.ui.pages";

  public static final String DEFAULT_DISPLAY_DATE_PERIOD = "defaultDisplayDatePeriod";

  // The shared instance
  private static RabbitUI plugin;

  /**
   * Returns the shared instance
   *
   * @return the shared instance
   */
  public static RabbitUI getDefault() {
    return plugin;
  }

  /**
   * The constructor
   */
  public RabbitUI() {
  }

  /**
   * Gets the default number of days to display the data in the main view.
   *
   * @return The default number of days.
   */
  public int getDefaultDisplayDatePeriod() {
    return getPreferenceStore().getInt(DEFAULT_DISPLAY_DATE_PERIOD);
  }

  /**
   * Sets the default number of days to display the data in the main view.
   *
   * @param numDays The number of days.
   */
  public void setDefaultDisplayDatePeriod(int numDays) {
    IPreferenceStore store = getPreferenceStore();
    store.setValue(DEFAULT_DISPLAY_DATE_PERIOD, numDays);
  }

  @Override
  public void start(BundleContext context) throws Exception {
    super.start(context);
    plugin = this;
  }

  @Override
  public void stop(BundleContext context) throws Exception {
    plugin = null;
    super.stop(context);
  }
 
  /**
   * Loads the root pages.
   *
   * @return The root pages.
   */
  public Collection<PageDescriptor> loadRootPages() {
    final Set<PageDescriptor> pages = Sets.newLinkedHashSet();
    for (final IConfigurationElement e : Platform.getExtensionRegistry()
        .getConfigurationElementsFor(UI_PAGE_EXTENSION_ID)) {

      SafeRunner.run(new ISafeRunnable() {

        @Override
        public void handleException(Throwable e) {
          e.printStackTrace();
        }

        @Override
        public void run() throws Exception {
          String id = e.getAttribute("id");
          String name = e.getAttribute("name");
          String desc = e.getAttribute("description");
          String imagePath = e.getAttribute("icon");
          String parent = e.getAttribute("parent");

          Object o = e.createExecutableExtension("class");
          if (!(o instanceof IPage)) {
            return;
          }

          ImageDescriptor image = null;
          if (imagePath != null) {
            image = imageDescriptorFromPlugin(e.getContributor().getName(),
                imagePath);
          }
          if (image == null) {
            image = PlatformUI.getWorkbench().getSharedImages()
                .getImageDescriptor(ISharedImages.IMG_OBJ_ELEMENT);
          }
          IPage page = (IPage) o;
          pages.add(new PageDescriptor(id, name, page, desc, image, parent));
        }
      });

    }

    // Run through all the elements and
    // restructure them:
    ImmutableSet.Builder<PageDescriptor> builder = ImmutableSet.builder();
    for (PageDescriptor child : pages) {
      if (child.getParentId() == null) {
        builder.add(child);
        continue;
      }
      boolean added = false;
      for (PageDescriptor parent : pages) {
        if (parent.getId().equals(child.getParentId())) {
          parent.getChildren().add(child);
          added = true;
          break;
        }
      }
      if (!added) {
        builder.add(child);
      }
    }
    return builder.build();
  }
}
TOP

Related Classes of rabbit.ui.internal.RabbitUI

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.