Renamed project folders to match the respective project name
[Mograsim.git] / SampleERCP / src / net / mograsim / rcp / splashhandlers / ExtensibleSplashHandler.java
diff --git a/SampleERCP/src/net/mograsim/rcp/splashhandlers/ExtensibleSplashHandler.java b/SampleERCP/src/net/mograsim/rcp/splashhandlers/ExtensibleSplashHandler.java
deleted file mode 100644 (file)
index 17d4ea5..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-package net.mograsim.rcp.splashhandlers;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.splash.AbstractSplashHandler;
-
-/**
- * @since 3.3
- *
- */
-public class ExtensibleSplashHandler extends AbstractSplashHandler
-{
-
-       private ArrayList<Image> fImageList;
-
-       private ArrayList<String> fTooltipList;
-
-       private static final String F_SPLASH_EXTENSION_ID = "Sample.splashExtension"; // NON-NLS-1
-
-       private static final String F_ELEMENT_ICON = "icon"; // NON-NLS-1
-
-       private static final String F_ELEMENT_TOOLTIP = "tooltip"; // NON-NLS-1
-
-       private static final String F_DEFAULT_TOOLTIP = "Image"; // NON-NLS-1
-
-       private static final int F_IMAGE_WIDTH = 50;
-
-       private static final int F_IMAGE_HEIGHT = 50;
-
-       private static final int F_SPLASH_SCREEN_BEVEL = 5;
-
-       private Composite fIconPanel;
-
-       /**
-        * 
-        */
-       public ExtensibleSplashHandler()
-       {
-               fImageList = new ArrayList<>();
-               fTooltipList = new ArrayList<>();
-               fIconPanel = null;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.ui.splash.AbstractSplashHandler#init(org.eclipse.swt.widgets. Shell)
-        */
-       @Override
-       public void init(Shell splash)
-       {
-               // Store the shell
-               super.init(splash);
-               // Configure the shell layout
-               configureUISplash();
-               // Load all splash extensions
-               loadSplashExtensions();
-               // If no splash extensions were loaded abort the splash handler
-               if (!hasSplashExtensions())
-               {
-                       return;
-               }
-               // Create UI
-               createUI();
-               // Configure the image panel bounds
-               configureUICompositeIconPanelBounds();
-               // Enter event loop and prevent the RCP application from
-               // loading until all work is done
-               doEventLoop();
-       }
-
-       /**
-        * @return
-        */
-       private boolean hasSplashExtensions()
-       {
-               return !fImageList.isEmpty();
-       }
-
-       /**
-        * 
-        */
-       private void createUI()
-       {
-               // Create the icon panel
-               createUICompositeIconPanel();
-               // Create the images
-               createUIImages();
-       }
-
-       /**
-        * 
-        */
-       private void createUIImages()
-       {
-               Iterator<Image> imageIterator = fImageList.iterator();
-               Iterator<String> tooltipIterator = fTooltipList.iterator();
-               int i = 1;
-               int columnCount = ((GridLayout) fIconPanel.getLayout()).numColumns;
-               // Create all the images
-               // Abort if we run out of columns (left-over images will not fit within
-               // the usable splash screen width)
-               while (imageIterator.hasNext() && (i <= columnCount))
-               {
-                       Image image = imageIterator.next();
-                       String tooltip = tooltipIterator.next();
-                       // Create the image using a label widget
-                       createUILabel(image, tooltip);
-                       i++;
-               }
-       }
-
-       /**
-        * @param image
-        * @param tooltip
-        */
-       private void createUILabel(Image image, String tooltip)
-       {
-               // Create the label (no text)
-               Label label = new Label(fIconPanel, SWT.NONE);
-               label.setImage(image);
-               label.setToolTipText(tooltip);
-       }
-
-       /**
-        * 
-        */
-       private void createUICompositeIconPanel()
-       {
-               Shell splash = getSplash();
-               // Create the composite
-               fIconPanel = new Composite(splash, SWT.NONE);
-               // Determine the maximum number of columns that can fit on the splash
-               // screen. One 50x50 image per column.
-               int maxColumnCount = getUsableSplashScreenWidth() / F_IMAGE_WIDTH;
-               // Limit size to the maximum number of columns if the number of images
-               // exceed this amount; otherwise, use the exact number of columns
-               // required.
-               int actualColumnCount = Math.min(fImageList.size(), maxColumnCount);
-               // Configure the layout
-               GridLayout layout = new GridLayout(actualColumnCount, true);
-               layout.horizontalSpacing = 0;
-               layout.verticalSpacing = 0;
-               layout.marginHeight = 0;
-               layout.marginWidth = 0;
-               fIconPanel.setLayout(layout);
-       }
-
-       /**
-        * 
-        */
-       private void configureUICompositeIconPanelBounds()
-       {
-               // Determine the size of the panel and position it at the bottom-right
-               // of the splash screen.
-               Point panelSize = fIconPanel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
-
-               int xCoord = getSplash().getSize().x - F_SPLASH_SCREEN_BEVEL - panelSize.x;
-               int yCoord = getSplash().getSize().y - F_SPLASH_SCREEN_BEVEL - panelSize.y;
-               int xWidth = panelSize.x;
-               int yWidth = panelSize.y;
-
-               fIconPanel.setBounds(xCoord, yCoord, xWidth, yWidth);
-       }
-
-       /**
-        * @return
-        */
-       private int getUsableSplashScreenWidth()
-       {
-               // Splash screen width minus two graphic border bevel widths
-               return getSplash().getSize().x - (F_SPLASH_SCREEN_BEVEL * 2);
-       }
-
-       /**
-        * 
-        */
-       private void loadSplashExtensions()
-       {
-               // Get all splash handler extensions
-               IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(F_SPLASH_EXTENSION_ID).getExtensions();
-               // Process all splash handler extensions
-               for (int i = 0; i < extensions.length; i++)
-               {
-                       processSplashExtension(extensions[i]);
-               }
-       }
-
-       /**
-        * @param extension
-        */
-       private void processSplashExtension(IExtension extension)
-       {
-               // Get all splash handler configuration elements
-               IConfigurationElement[] elements = extension.getConfigurationElements();
-               // Process all splash handler configuration elements
-               for (int j = 0; j < elements.length; j++)
-               {
-                       processSplashElements(elements[j]);
-               }
-       }
-
-       /**
-        * @param configurationElement
-        */
-       private void processSplashElements(IConfigurationElement configurationElement)
-       {
-               // Attribute: icon
-               processSplashElementIcon(configurationElement);
-               // Attribute: tooltip
-               processSplashElementTooltip(configurationElement);
-       }
-
-       /**
-        * @param configurationElement
-        */
-       private void processSplashElementTooltip(IConfigurationElement configurationElement)
-       {
-               // Get attribute tooltip
-               String tooltip = configurationElement.getAttribute(F_ELEMENT_TOOLTIP);
-               // If a tooltip is not defined, give it a default
-               if ((tooltip == null) || (tooltip.length() == 0))
-               {
-                       fTooltipList.add(F_DEFAULT_TOOLTIP);
-               } else
-               {
-                       fTooltipList.add(tooltip);
-               }
-       }
-
-       /**
-        * @param configurationElement
-        */
-       private void processSplashElementIcon(IConfigurationElement configurationElement)
-       {
-               // Get attribute icon
-               String iconImageFilePath = configurationElement.getAttribute(F_ELEMENT_ICON);
-               // Abort if an icon attribute was not specified
-               if ((iconImageFilePath == null) || (iconImageFilePath.length() == 0))
-               {
-                       return;
-               }
-               // Create a corresponding image descriptor
-               ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(configurationElement.getNamespaceIdentifier(),
-                               iconImageFilePath);
-               // Abort if no corresponding image was found
-               if (descriptor == null)
-               {
-                       return;
-               }
-               // Create the image
-               Image image = descriptor.createImage();
-               // Abort if image creation failed
-               if (image == null)
-               {
-                       return;
-               }
-               // Abort if the image does not have dimensions of 50x50
-               if ((image.getBounds().width != F_IMAGE_WIDTH) || (image.getBounds().height != F_IMAGE_HEIGHT))
-               {
-                       // Dipose of the image
-                       image.dispose();
-                       return;
-               }
-               // Store the image and tooltip
-               fImageList.add(image);
-       }
-
-       /**
-        * 
-        */
-       private void configureUISplash()
-       {
-               // Configure layout
-               GridLayout layout = new GridLayout(1, true);
-               getSplash().setLayout(layout);
-               // Force shell to inherit the splash background
-               getSplash().setBackgroundMode(SWT.INHERIT_DEFAULT);
-       }
-
-       /**
-        * 
-        */
-       private void doEventLoop()
-       {
-               Shell splash = getSplash();
-               if (!splash.getDisplay().readAndDispatch())
-               {
-                       splash.getDisplay().sleep();
-               }
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.ui.splash.AbstractSplashHandler#dispose()
-        */
-       @Override
-       public void dispose()
-       {
-               super.dispose();
-               // Check to see if any images were defined
-               if ((fImageList == null) || fImageList.isEmpty())
-               {
-                       return;
-               }
-               // Dispose of all the images
-               Iterator<Image> iterator = fImageList.iterator();
-               while (iterator.hasNext())
-               {
-                       Image image = iterator.next();
-                       image.dispose();
-               }
-       }
-}