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