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) { |