core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/TaskBar.java
author dadubrow
Wed, 14 Jul 2010 12:01:27 -0500
changeset 1615 d5f384bf1e88
parent 1609 085da1889c59
child 1618 712d047abd8b
permissions -rw-r--r--
more portal
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.GridDataFactory;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    25
import org.eclipse.jface.layout.RowDataFactory;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    26
import org.eclipse.jface.layout.RowLayoutFactory;
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
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    34
import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage.IActionBar;
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
1615
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    38
	private static final String FONT_NAME = "Arial"; //$NON-NLS-1$
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    39
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    40
	private final class ActionListener implements IHyperlinkListener {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    41
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    42
		public void linkActivated(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    43
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    44
			runAction(link);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    45
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    46
		
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    47
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    48
		public void linkEntered(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    49
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    50
			link.setUnderlined(true);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    51
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    52
		
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    53
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    54
		public void linkExited(HyperlinkEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    55
			Hyperlink link = (Hyperlink) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    56
			link.setUnderlined(false);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    57
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    58
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    59
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    60
	private PortalEditor portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    61
	private Map<Hyperlink, IAction> linkToActionMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    62
	private ActionListener listener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    63
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    64
	public TaskBar(Composite parent, PortalEditor portalEditor, IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    65
		super(parent, portalEditor.getBackgroundParent(), 
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    66
				parent.getDisplay().getSystemColor(SWT.COLOR_BLACK),
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    67
				parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    68
		this.portalEditor = portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    69
		createTitle(actionBar);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    70
		createActions(actionBar);
1615
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    71
		GridDataFactory.swtDefaults().grab(true, true).align(SWT.CENTER, SWT.BEGINNING).applyTo(this);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    72
		RowLayoutFactory.swtDefaults().type(SWT.VERTICAL).margins(10, 10).extendedMargins(5, 5, 5, 10).fill(true).wrap(false).applyTo(this);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    73
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    74
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    75
	private void createTitle(IActionBar actionBar) {
1615
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    76
		Label l = new Label(this, SWT.LEFT);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    77
		l.setFont(portalEditor.createFont(FONT_NAME, 10, SWT.BOLD));
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    78
		l.setBackground(l.getDisplay().getSystemColor(SWT.COLOR_WHITE));
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    79
		l.setText(actionBar.getTitle());
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    80
		RowDataFactory.swtDefaults().applyTo(l);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    81
		l = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
d5f384bf1e88 more portal
dadubrow
parents: 1609
diff changeset
    82
		RowDataFactory.swtDefaults().applyTo(l);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    83
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    84
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    85
	private void createActions(IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    86
		listener = new ActionListener();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    87
		linkToActionMap = new HashMap<Hyperlink, IAction>();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    88
		for (IAction action : actionBar.getActions()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    89
			Hyperlink link = new Hyperlink(this, SWT.NONE);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    90
			link.setText(action.getText());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    91
			String toolTipText = action.getToolTipText();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    92
			if (toolTipText != null)
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    93
				link.setToolTipText(toolTipText);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    94
			link.setBackground(link.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    95
			linkToActionMap.put(link, action);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    96
			link.addHyperlinkListener(listener);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    97
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    98
//		updateAllActionsUI();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    99
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   100
	
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   101
	public void runAction(Hyperlink link) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   102
		IAction action = linkToActionMap.get(link);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   103
		action.run();
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 updateActionUI(String actionId) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   107
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   108
			IAction action = entry.getValue();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   109
			if (actionId.equals(action.getId())) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   110
				entry.getKey().setEnabled(action.isEnabled());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   111
			}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   112
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   113
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   114
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   115
	public void updateAllActionsUI() {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   116
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   117
			entry.getKey().setEnabled(entry.getValue().isEnabled());
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
}