core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/PortalPage.java
author dadubrow
Mon, 20 Sep 2010 14:29:54 -0500
changeset 2062 4d032dc346bf
parent 2035 42a3ddebe583
permissions -rw-r--r--
More portal tweaks - icons, nav l&f + tooltips
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     1
/*
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     3
* All rights reserved.
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     8
*
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    11
*
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    12
* Contributors:
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    13
*
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    14
* Description: 
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    15
*
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    16
*/
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    17
package com.nokia.carbide.internal.discovery.ui.editor;
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    18
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    19
import java.util.ArrayList;
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    20
import java.util.Collections;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    21
import java.util.Comparator;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    22
import java.util.List;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    23
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    24
import org.eclipse.jface.action.Action;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    25
import org.eclipse.jface.action.IAction;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    26
import org.eclipse.jface.layout.GridDataFactory;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    27
import org.eclipse.jface.layout.GridLayoutFactory;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    28
import org.eclipse.jface.resource.ImageDescriptor;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    29
import org.eclipse.swt.SWT;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    30
import org.eclipse.swt.graphics.Color;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    31
import org.eclipse.swt.widgets.Composite;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    32
import org.eclipse.swt.widgets.Control;
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    33
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    34
import com.nokia.carbide.internal.discovery.ui.editor.PortalEditor.LayerExtension;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    35
import com.nokia.carbide.internal.discovery.ui.extension.IActionBar;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    36
import com.nokia.carbide.internal.discovery.ui.extension.ICommandBarFactory;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    37
import com.nokia.carbide.internal.discovery.ui.extension.IPortalPageLayer;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    38
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    39
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    40
public class PortalPage implements IActionBar {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    41
	
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    42
	private class ChangeLayerAction extends Action {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    43
		private Layer layer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    44
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    45
		private ChangeLayerAction(Layer layer) {
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    46
			super(layer.getTitle());
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    47
			this.layer = layer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    48
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    49
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    50
		public void run() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    51
			setCurrentLayer(layer);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    52
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    53
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    54
		public boolean isEnabled() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    55
			return !layer.equals(currentLayer);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    56
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    57
	}
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    58
	
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    59
	private class Layer {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    60
		private IPortalPageLayer layer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    61
		private boolean initialized;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    62
		private Control control;
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    63
		private String title;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    64
		
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    65
		public Layer(IPortalPageLayer layer, String title) {
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    66
			this.layer = layer;
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    67
			this.title = title;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    68
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    69
		
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    70
		public IPortalPageLayer getLayer() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    71
			return layer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    72
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    73
		
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    74
		public void initialize() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    75
			layer.init();
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    76
			this.initialized = true;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    77
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    78
		
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    79
		public boolean isInitialized() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    80
			return initialized;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    81
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    82
		
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    83
		public void setControl(Control control) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    84
			this.control = control;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    85
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    86
		
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    87
		public Control getControl() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    88
			return control;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    89
		}
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    90
		
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    91
		public String getTitle() {
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    92
			return title;
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
    93
		}
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    94
	}
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
    95
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    96
	private String title;
2062
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
    97
	private String tooltip;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    98
	private ImageDescriptor imageDescriptor;
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
    99
	private String id;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   100
	private final ICommandBarFactory commandBarFactory;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   101
	private StackComposite pageComposite;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   102
	private boolean initialized;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   103
	private List<Layer> layers;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   104
	private Layer currentLayer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   105
	private IAction[] actions;
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   106
	private List<TaskBar> pageTaskBars;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   107
	
2062
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   108
	public PortalPage(String title, String tooltip, ImageDescriptor imageDescriptor, String id, 
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   109
			List<LayerExtension> layerExtensions, ICommandBarFactory commandBarFactory) {
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   110
		this.title = title;
2062
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   111
		this.tooltip = tooltip;
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   112
		this.imageDescriptor = imageDescriptor;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   113
		this.id = id;
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   114
		this.commandBarFactory = commandBarFactory;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   115
		layers = new ArrayList<Layer>(layerExtensions.size());
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   116
		Collections.sort(layerExtensions, new Comparator<LayerExtension>() {
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   117
			@Override
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   118
			public int compare(LayerExtension o1, LayerExtension o2) {
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   119
				return o1.order - o2.order;
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   120
			}
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   121
		});
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   122
		for (LayerExtension layerExtension : layerExtensions) {
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   123
			layers.add(new Layer(layerExtension.layer, layerExtension.title));
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   124
		}
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   125
		pageTaskBars = new ArrayList<TaskBar>(layerExtensions.size());
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   126
	}
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   127
	
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   128
	public String getId() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   129
		return id;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   130
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   131
	
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   132
	public String getTitle() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   133
		return title;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   134
	}
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   135
	
2062
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   136
	public String getTooltip() {
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   137
		return tooltip;
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   138
	}
4d032dc346bf More portal tweaks - icons, nav l&f + tooltips
dadubrow
parents: 2035
diff changeset
   139
	
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   140
	public ImageDescriptor getImageDescriptor() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   141
		return imageDescriptor;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   142
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   143
	
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   144
	public Control getPageControl() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   145
		return pageComposite;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   146
	}
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   147
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   148
	public void initialize() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   149
		setCurrentLayer(layers.get(0));
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   150
		initialized = true;
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   151
	}
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   152
	
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   153
	public boolean isInitialized() {
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   154
		return initialized;
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   155
	}
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   156
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   157
	public void createPageComposite(Composite parent, PortalEditor portalEditor) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   158
		Composite backgroundParent = portalEditor.getBackgroundParent();
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   159
		pageComposite = new StackComposite(parent, backgroundParent);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   160
		for (Layer layer : layers) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   161
			Composite layerComposite = new SharedBackgroundComposite(pageComposite, backgroundParent);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   162
			GridDataFactory.fillDefaults().grab(true, true).applyTo(layerComposite);
2035
42a3ddebe583 Some portal tweaks
dadubrow
parents: 1734
diff changeset
   163
			GridLayoutFactory.fillDefaults().numColumns(2).spacing(10, 0).extendedMargins(0, 0, 10, 0).applyTo(layerComposite);
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   164
			createTaskBarControls(portalEditor, layerComposite, layer.getLayer());
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   165
			createMainControl(portalEditor, layerComposite, layer.getLayer());
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   166
			layer.setControl(layerComposite);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   167
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   168
	}
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   169
	
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   170
	protected void createTaskBarControls(PortalEditor portalEditor, Composite pageComposite, IPortalPageLayer layerExtension) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   171
		Composite backgroundParent = portalEditor.getBackgroundParent();
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   172
		Composite taskComposite = new SharedBackgroundComposite(pageComposite, backgroundParent);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   173
		GridLayoutFactory.fillDefaults().applyTo(taskComposite);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   174
		GridDataFactory.fillDefaults().grab(false, true).applyTo(taskComposite);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   175
		TaskBar taskBar = new TaskBar(taskComposite, backgroundParent, this);
2035
42a3ddebe583 Some portal tweaks
dadubrow
parents: 1734
diff changeset
   176
		GridDataFactory.fillDefaults().minSize(120, SWT.DEFAULT).grab(true, false).indent(0, 0).applyTo(taskBar);
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   177
		pageTaskBars.add(taskBar);
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   178
		ActionUIUpdater updater = new ActionUIUpdater();
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   179
		createCommandBars(backgroundParent, taskComposite, updater, 
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   180
				layerExtension.createCommandBars(portalEditor, updater));
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   181
		if (commandBarFactory != null) {
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   182
			createCommandBars(backgroundParent, taskComposite, updater, 
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   183
					commandBarFactory.createCommandBars(portalEditor, updater));
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   184
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   185
		}
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   186
	}
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   187
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   188
	private void createCommandBars(Composite backgroundParent, Composite taskComposite,
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   189
			ActionUIUpdater updater, IActionBar[] commandBars) {
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
   190
		if (commandBars != null) {
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
   191
			for (IActionBar actionBar : commandBars) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   192
				TaskBar taskBar = new TaskBar(taskComposite, backgroundParent, actionBar);
1721
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
   193
				updater.addTaskBar(taskBar);
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
   194
				GridDataFactory.fillDefaults().minSize(150, SWT.DEFAULT).grab(true, false).indent(0, 0).applyTo(taskBar);
18638adda547 more portal changes:
dadubrow
parents: 1705
diff changeset
   195
			}
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   196
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   197
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   198
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   199
	protected void createMainControl(PortalEditor portalEditor, Composite pageComposite, IPortalPageLayer layerExtension) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   200
		Color background = pageComposite.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   201
		Composite mainControl = 
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   202
			new RoundedCornerComposite(pageComposite, portalEditor.getBackgroundParent(), null, background);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   203
		GridLayoutFactory.fillDefaults().margins(2, 2).applyTo(mainControl);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   204
		GridDataFactory.fillDefaults().grab(true, true).applyTo(mainControl);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   205
		Control control = layerExtension.createControl(mainControl, portalEditor);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   206
		GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   207
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   208
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   209
	@Override
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   210
	public IAction[] getActions() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   211
		if (actions == null) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   212
			actions = new Action[layers.size()];
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   213
			int i = 0;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   214
			for (Layer layer : layers) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   215
				actions[i++] = new ChangeLayerAction(layer);
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   216
			}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   217
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   218
		return actions;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   219
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   220
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   221
	@Override
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   222
	public String[] getHighlightedActionIds() {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   223
		return null;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   224
	}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   225
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   226
	protected void setCurrentLayer(Layer layer) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   227
		currentLayer = layer;
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   228
		pageComposite.showControl(currentLayer.getControl());
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   229
		if (!currentLayer.isInitialized())
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   230
			currentLayer.initialize();
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1721
diff changeset
   231
		for (TaskBar taskBar : pageTaskBars) {
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   232
			taskBar.updateAllActionsUI();
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   233
		}
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
   234
	}
1684
c2eba6dabd38 refactor to allow better support for multiple layers
dadubrow
parents:
diff changeset
   235
}