core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/PortalEditor.java
changeset 1616 1828ccdd6878
parent 1615 d5f384bf1e88
child 1618 712d047abd8b
equal deleted inserted replaced
1615:d5f384bf1e88 1616:1828ccdd6878
    14 * Description: 
    14 * Description: 
    15 *
    15 *
    16 */
    16 */
    17 package com.nokia.carbide.internal.discovery.ui.editor;
    17 package com.nokia.carbide.internal.discovery.ui.editor;
    18 
    18 
       
    19 import java.text.MessageFormat;
    19 import java.util.ArrayList;
    20 import java.util.ArrayList;
       
    21 import java.util.Collections;
       
    22 import java.util.Comparator;
    20 import java.util.HashMap;
    23 import java.util.HashMap;
    21 import java.util.List;
    24 import java.util.List;
    22 import java.util.Map;
    25 import java.util.Map;
    23 
    26 
    24 import org.eclipse.core.runtime.CoreException;
    27 import org.eclipse.core.runtime.CoreException;
    48 
    51 
    49 import com.nokia.carbide.discovery.ui.Activator;
    52 import com.nokia.carbide.discovery.ui.Activator;
    50 import com.nokia.carbide.discovery.ui.Messages;
    53 import com.nokia.carbide.discovery.ui.Messages;
    51 import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage;
    54 import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage;
    52 import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage.IActionBar;
    55 import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage.IActionBar;
       
    56 import com.nokia.cpp.internal.api.utils.core.Pair;
    53 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
    57 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
    54 
    58 
    55 public class PortalEditor extends EditorPart {
    59 public class PortalEditor extends EditorPart {
    56 
    60 
    57 	private static final String ID = "com.nokia.carbide.discovery.ui.portalEditor"; //$NON-NLS-1$
    61 	private static final String ID = "com.nokia.carbide.discovery.ui.portalEditor"; //$NON-NLS-1$
    66 	private Map<IPortalPage, Control> pageToControlMap;
    70 	private Map<IPortalPage, Control> pageToControlMap;
    67 	private NavigationBar navigationBar;
    71 	private NavigationBar navigationBar;
    68 
    72 
    69 	public PortalEditor() {
    73 	public PortalEditor() {
    70 		resources = new ArrayList<Resource>();
    74 		resources = new ArrayList<Resource>();
    71 		getPortalPages();
    75 		loadPortalPages();
    72 		pageToControlMap = new HashMap<IPortalPage, Control>();
    76 		pageToControlMap = new HashMap<IPortalPage, Control>();
    73 	}
    77 	}
    74 	
    78 	
    75 	private void getPortalPages() {
    79 	private void loadPortalPages() {
    76 		uninitializedPages = new ArrayList<IPortalPage>();
    80 		List<Pair<IPortalPage, Integer>> pageExtensions = new ArrayList<Pair<IPortalPage,Integer>>();
    77 		IConfigurationElement[] elements = 
    81 		IConfigurationElement[] elements = 
    78 			Platform.getExtensionRegistry().getConfigurationElementsFor(Activator.PLUGIN_ID + ".portalPage"); //$NON-NLS-1$
    82 			Platform.getExtensionRegistry().getConfigurationElementsFor(Activator.PLUGIN_ID + ".portalPage"); //$NON-NLS-1$
    79 		for (IConfigurationElement element : elements) {
    83 		for (IConfigurationElement element : elements) {
    80 			try {
    84 			try {
    81 				uninitializedPages.add((IPortalPage) element.createExecutableExtension("class")); //$NON-NLS-1$
    85 				IPortalPage portalPage = (IPortalPage) element.createExecutableExtension("class"); //$NON-NLS-1$
       
    86 				String rankString = element.getAttribute("rank"); //$NON-NLS-1$
       
    87 				int rank = Integer.MAX_VALUE;
       
    88 				if (rankString != null) {
       
    89 					try {
       
    90 						rank = Integer.parseInt(rankString);
       
    91 					}
       
    92 					catch (NumberFormatException e) {
       
    93 						Activator.logError(MessageFormat.format("Could not get rank for portal page {0}",
       
    94 										portalPage.getClass().getName()), e);
       
    95 					}
       
    96 				}
       
    97 				pageExtensions.add(new Pair<IPortalPage, Integer>(portalPage, rank));
    82 			} 
    98 			} 
    83 			catch (CoreException e) {
    99 			catch (CoreException e) {
    84 				Activator.logError(Messages.PortalEditor_PageLoadError, e);
   100 				Activator.logError(Messages.PortalEditor_PageLoadError, e);
    85 			}
   101 			}
       
   102 		}
       
   103 		Collections.sort(pageExtensions, new Comparator<Pair<IPortalPage, Integer>>() {
       
   104 			@Override
       
   105 			public int compare(Pair<IPortalPage, Integer> o1, Pair<IPortalPage, Integer> o2) {
       
   106 				return o1.second.compareTo(o2.second);
       
   107 			}
       
   108 		});
       
   109 		uninitializedPages = new ArrayList<IPortalPage>();
       
   110 		for (Pair<IPortalPage, Integer> pair : pageExtensions) {
       
   111 			uninitializedPages.add(pair.first);
    86 		}
   112 		}
    87 	}
   113 	}
    88 
   114 
    89 	@Override
   115 	@Override
    90 	public void doSave(IProgressMonitor monitor) {
   116 	public void doSave(IProgressMonitor monitor) {