core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/TaskBar.java
author dadubrow
Tue, 13 Jul 2010 15:27:30 -0500
changeset 1609 085da1889c59
child 1615 d5f384bf1e88
permissions -rw-r--r--
Portal initial commit
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
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 PortalEditor portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    59
	private Map<Hyperlink, IAction> linkToActionMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    60
	private ActionListener listener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    61
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    62
	public TaskBar(Composite parent, PortalEditor portalEditor, IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    63
		super(parent, portalEditor.getBackgroundParent(), 
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    64
				parent.getDisplay().getSystemColor(SWT.COLOR_BLACK),
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    65
				parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    66
		this.portalEditor = portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    67
		createTitle(actionBar);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    68
		createActions(actionBar);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    69
		setLayoutData(GridDataFactory.swtDefaults().grab(true, true).align(SWT.CENTER, SWT.BEGINNING).create());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    70
		setLayout(RowLayoutFactory.swtDefaults().type(SWT.VERTICAL).margins(10, 10).extendedMargins(5, 5, 5, 10).fill(true).wrap(false).create());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    71
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    72
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    73
	private void createTitle(IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    74
		String title = actionBar.getTitle();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    75
		if (title != null) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    76
			Label l = new Label(this, SWT.LEFT);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    77
			l.setFont(portalEditor.createFont("Arial", 10, SWT.BOLD));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    78
			l.setBackground(l.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    79
			l.setText(title);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    80
			l.setLayoutData(RowDataFactory.swtDefaults().create());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    81
			l = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    82
			l.setLayoutData(RowDataFactory.swtDefaults().create());
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
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    86
	private void createActions(IActionBar actionBar) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    87
		listener = new ActionListener();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    88
		linkToActionMap = new HashMap<Hyperlink, IAction>();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    89
		for (IAction action : actionBar.getActions()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    90
			Hyperlink link = new Hyperlink(this, SWT.NONE);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    91
			link.setText(action.getText());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    92
			String toolTipText = action.getToolTipText();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    93
			if (toolTipText != null)
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    94
				link.setToolTipText(toolTipText);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    95
			link.setBackground(link.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    96
			linkToActionMap.put(link, action);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    97
			link.addHyperlinkListener(listener);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    98
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    99
//		updateAllActionsUI();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   100
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   101
	
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   102
	public void runAction(Hyperlink link) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   103
		IAction action = linkToActionMap.get(link);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   104
		action.run();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   105
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   106
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   107
	public void updateActionUI(String actionId) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   108
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   109
			IAction action = entry.getValue();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   110
			if (actionId.equals(action.getId())) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   111
				entry.getKey().setEnabled(action.isEnabled());
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
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   116
	public void updateAllActionsUI() {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   117
		for (Entry<Hyperlink, IAction> entry : linkToActionMap.entrySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   118
			entry.getKey().setEnabled(entry.getValue().isEnabled());
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
}