core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/NavigationBar.java
author dadubrow
Fri, 16 Jul 2010 15:39:47 -0500
changeset 1634 c8405758cfd4
parent 1618 712d047abd8b
child 1684 c2eba6dabd38
permissions -rw-r--r--
add portal support for browser page
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.LinkedHashMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    20
import java.util.Map;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    21
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    22
import org.eclipse.jface.layout.RowDataFactory;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    23
import org.eclipse.jface.layout.RowLayoutFactory;
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    24
import org.eclipse.jface.resource.FontDescriptor;
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    25
import org.eclipse.jface.resource.JFaceResources;
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    26
import org.eclipse.swt.SWT;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    27
import org.eclipse.swt.events.SelectionAdapter;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    28
import org.eclipse.swt.events.SelectionEvent;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    29
import org.eclipse.swt.events.SelectionListener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    30
import org.eclipse.swt.graphics.Font;
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    31
import org.eclipse.swt.graphics.FontData;
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    32
import org.eclipse.swt.widgets.Button;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    33
import org.eclipse.swt.widgets.Composite;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    34
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    35
import com.nokia.carbide.internal.discovery.ui.extension.IPortalPage;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    36
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    37
class NavigationBar extends RoundedCornerComposite {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    38
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    39
	private PortalEditor portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    40
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    41
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    42
	private final class ButtonListener extends SelectionAdapter {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    43
		@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    44
		public void widgetSelected(SelectionEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    45
			Button button = (Button) e.getSource();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    46
			selectNavButton(button);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    47
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    48
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    49
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    50
	private Map<Button, IPortalPage> buttonToPageMap;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    51
	private SelectionListener listener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    52
	private Font buttonFont;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    53
	private Font selectedButtonFont;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    54
	
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    55
	NavigationBar(PortalEditor portalEditor, Composite parent) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    56
		super(parent, portalEditor.getBackgroundParent(), 
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    57
				parent.getDisplay().getSystemColor(SWT.COLOR_BLACK),
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    58
				parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    59
		this.portalEditor = portalEditor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    60
		buttonToPageMap = new LinkedHashMap<Button, IPortalPage>();
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    61
		RowLayoutFactory.swtDefaults().margins(3, 3).wrap(false).applyTo(this);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    62
		listener = new ButtonListener();
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    63
		selectedButtonFont = JFaceResources.getHeaderFont();
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    64
		FontData[] fontData = selectedButtonFont.getFontData();
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    65
		for (FontData fd : fontData) {
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    66
			fd.setStyle(SWT.NORMAL);
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    67
		}
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    68
		FontDescriptor desc = FontDescriptor.createFrom(fontData);
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    69
		buttonFont = portalEditor.createFont(desc);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    70
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    71
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    72
	public void initUI() {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    73
		if (buttonToPageMap.isEmpty())
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    74
			return;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    75
		selectNavButton(buttonToPageMap.keySet().iterator().next());
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    76
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    77
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    78
	public void addNavButton(NavigationBar bar, IPortalPage page) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    79
		Button b = new Button(bar, SWT.TOGGLE | SWT.FLAT);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    80
		b.setFont(buttonFont);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    81
		b.setText(page.getText());
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    82
		b.setImage(portalEditor.createImage(page.getImageDescriptor(), 16, 16));
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    83
		b.addSelectionListener(listener);
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    84
		RowDataFactory.swtDefaults().applyTo(b);
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    85
		buttonToPageMap.put(b, page);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    86
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    87
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    88
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    89
	public void selectNavButton(Button button) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    90
		for (Button other : buttonToPageMap.keySet()) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    91
			other.setSelection(false);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    92
			other.setFont(buttonFont);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    93
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    94
		button.setSelection(true);
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    95
		portalEditor.showPage(buttonToPageMap.get(button));
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    96
		button.setFont(selectedButtonFont);
1618
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    97
		layout();
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    98
	}
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
    99
	
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
   100
	@Override
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
   101
	public void layout() {
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
   102
		super.layout();
712d047abd8b Portal tweaks - use standard fonts, etc.
dadubrow
parents: 1615
diff changeset
   103
		pack();
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   104
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
   105
}