core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/TaskBar.java
author dadubrow
Sat, 18 Sep 2010 16:25:07 -0500
changeset 2053 683a3be65e07
parent 1831 3319dd953212
permissions -rw-r--r--
Bug 12104 - force redraw background on resize
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     1
/*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     3
* All rights reserved.
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     8
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    11
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    12
* Contributors:
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    13
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    14
* Description: 
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    15
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    16
*/
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    17
package com.nokia.carbide.internal.discovery.ui.editor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    18
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    19
import java.util.HashMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    20
import java.util.Map;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    21
import java.util.Map.Entry;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    22
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    23
import org.eclipse.jface.action.IAction;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    24
import org.eclipse.jface.layout.RowDataFactory;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    25
import org.eclipse.jface.layout.RowLayoutFactory;
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    26
import org.eclipse.jface.resource.JFaceResources;
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    27
import org.eclipse.swt.SWT;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    28
import org.eclipse.swt.widgets.Composite;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    29
import org.eclipse.swt.widgets.Label;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    30
import org.eclipse.ui.forms.events.HyperlinkEvent;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    31
import org.eclipse.ui.forms.events.IHyperlinkListener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    32
import org.eclipse.ui.forms.widgets.Hyperlink;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    33
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
    34
import com.nokia.carbide.internal.discovery.ui.extension.IActionBar;
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    35
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    36
class TaskBar extends RoundedCornerComposite {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    37
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    38
	private final class ActionListener implements IHyperlinkListener {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    39
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    40
		public void linkActivated(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    41
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    42
			runAction(link);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    43
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    44
		
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    45
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    46
		public void linkEntered(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    47
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    48
			link.setUnderlined(true);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    49
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    50
		
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    51
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    52
		public void linkExited(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    53
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    54
			link.setUnderlined(false);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    55
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    56
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    57
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    58
	private Map<Hyperlink, IAction> linkToActionMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    59
	private ActionListener listener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    60
1705
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    61
	public TaskBar(Composite parent, Composite backgroundParent, IActionBar actionBar) {
71a151b1b515 add support for multiple layers per page
dadubrow
parents: 1684
diff changeset
    62
		super(parent, backgroundParent, 
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    63
				parent.getDisplay().getSystemColor(SWT.COLOR_BLACK),
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    64
				parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    65
		createTitle(actionBar);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    66
		createActions(actionBar);
1831
3319dd953212 UI tweaks
dadubrow
parents: 1734
diff changeset
    67
		RowLayoutFactory.swtDefaults().type(SWT.VERTICAL).margins(5, 5).extendedMargins(7, 7, 7, 7).fill(true).wrap(false).applyTo(this);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    68
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    69
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    70
	private void createTitle(IActionBar actionBar) {
1615
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    71
		Label l = new Label(this, SWT.LEFT);
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    72
		l.setFont(JFaceResources.getBannerFont());
1615
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    73
		l.setBackground(l.getDisplay().getSystemColor(SWT.COLOR_WHITE));
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    74
		l.setText(actionBar.getTitle());
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    75
		RowDataFactory.swtDefaults().applyTo(l);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    76
		l = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    77
		RowDataFactory.swtDefaults().applyTo(l);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    78
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    79
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    80
	private void createActions(IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    81
		listener = new ActionListener();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    82
		linkToActionMap = new HashMap<Hyperlink, IAction>();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    83
		for (IAction action : actionBar.getActions()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    84
			Hyperlink link = new Hyperlink(this, SWT.NONE);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    85
			link.setText(action.getText());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    86
			String toolTipText = action.getToolTipText();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    87
			if (toolTipText != null)
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    88
				link.setToolTipText(toolTipText);
1653
af990ce6899d tweak portal ui
dadubrow
parents: 1634
diff changeset
    89
			link.setForeground(link.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE));
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    90
			link.setBackground(link.getDisplay().getSystemColor(SWT.COLOR_WHITE));
1661
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    91
			String actionId = action.getId();
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    92
			String[] highlightedActionIds = actionBar.getHighlightedActionIds();
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    93
			if (actionId != null && highlightedActionIds != null) {
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    94
				for (String highlightedId : highlightedActionIds) {
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    95
					if (highlightedId.equals(actionId)) {
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    96
						link.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    97
						break;
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    98
					}
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
    99
				}
cd8159f371c7 multiple changes:
dadubrow
parents: 1653
diff changeset
   100
			}
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   101
			linkToActionMap.put(link, action);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   102
			link.addHyperlinkListener(listener);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   103
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   104
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   105
	
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   106
	public void runAction(Hyperlink link) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   107
		IAction action = linkToActionMap.get(link);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   108
		action.run();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   109
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   110
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   111
	public void updateActionUI(String actionId) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   112
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   113
			IAction action = entry.getValue();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   114
			if (actionId.equals(action.getId())) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   115
				Hyperlink link = entry.getKey();
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   116
				if (link != null && !link.isDisposed())
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   117
					link.setEnabled(entry.getValue().isEnabled());
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   118
			}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   119
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   120
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   121
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   122
	public void updateAllActionsUI() {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   123
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   124
			Hyperlink link = entry.getKey();
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   125
			if (link != null && !link.isDisposed())
bf670d38123a More portal framework changes:
dadubrow
parents: 1705
diff changeset
   126
				link.setEnabled(entry.getValue().isEnabled());
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   127
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   128
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   129
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   130
}