001: /*******************************************************************************
002: * Copyright (c) 2004 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Common Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/cpl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.internal.r21presentation.presentations;
011:
012: import org.eclipse.jface.preference.IPreferenceStore;
013: import org.eclipse.jface.util.IPropertyChangeListener;
014: import org.eclipse.jface.util.PropertyChangeEvent;
015: import org.eclipse.swt.SWT;
016: import org.eclipse.swt.widgets.Composite;
017: import org.eclipse.ui.internal.IPreferenceConstants;
018: import org.eclipse.ui.internal.WorkbenchPlugin;
019: import org.eclipse.ui.internal.r21presentation.R21PresentationMessages;
020: import org.eclipse.ui.internal.r21presentation.widgets.CTabFolderEvent;
021: import org.eclipse.ui.internal.r21presentation.widgets.R21PaneFolder;
022: import org.eclipse.ui.internal.r21presentation.widgets.R21PaneFolderButtonListener;
023: import org.eclipse.ui.presentations.IStackPresentationSite;
024:
025: /**
026: * Controls the appearance of views stacked into the workbench.
027: *
028: * @since 3.0
029: */
030: public class R21ViewStackPresentation extends R21BasicStackPresentation {
031:
032: private IPreferenceStore preferenceStore = WorkbenchPlugin
033: .getDefault().getPreferenceStore();
034:
035: private final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {
036: public void propertyChange(
037: PropertyChangeEvent propertyChangeEvent) {
038: if (IPreferenceConstants.VIEW_TAB_POSITION
039: .equals(propertyChangeEvent.getProperty())
040: && !isDisposed()) {
041: int tabLocation = preferenceStore
042: .getInt(IPreferenceConstants.VIEW_TAB_POSITION);
043: getPaneFolder().setTabPosition(tabLocation);
044: }
045: // else if (IPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS.equals(propertyChangeEvent.getProperty()) && !isDisposed()) {
046: // boolean traditionalTab = preferenceStore.getBoolean(IPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS);
047: // setTabStyle(traditionalTab);
048: // }
049: }
050: };
051:
052: private R21PaneFolderButtonListener showListListener = new R21PaneFolderButtonListener() {
053:
054: public void showList(CTabFolderEvent event) {
055: event.doit = false;
056: showListDefaultLocation();
057: }
058: };
059:
060: public R21ViewStackPresentation(Composite parent,
061: IStackPresentationSite newSite) {
062:
063: super (new R21PaneFolder(parent, SWT.BORDER), newSite);
064: R21PaneFolder tabFolder = getPaneFolder();
065:
066: tabFolder.addButtonListener(showListListener);
067:
068: preferenceStore
069: .addPropertyChangeListener(propertyChangeListener);
070: int tabLocation = preferenceStore
071: .getInt(IPreferenceConstants.VIEW_TAB_POSITION);
072:
073: tabFolder.setTabPosition(tabLocation);
074: // setTabStyle(preferenceStore.getBoolean(IPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
075:
076: // // do not support close box on unselected tabs.
077: // tabFolder.setUnselectedCloseVisible(false);
078: //
079: // // do not support icons in unselected tabs.
080: // tabFolder.setUnselectedImageVisible(false);
081: //
082: // set basic colors
083: //ColorSchemeService.setTabAttributes(this, tabFolder);
084:
085: updateGradient();
086: }
087:
088: // /**
089: // * Set the tab folder tab style to a tradional style tab
090: // * @param traditionalTab <code>true</code> if traditional style tabs should be used
091: // * <code>false</code> otherwise.
092: // */
093: // protected void setTabStyle(boolean traditionalTab) {
094: // // set the tab style to non-simple
095: // getTabFolder().setSimpleTab(traditionalTab);
096: // }
097:
098: /* (non-Javadoc)
099: * @see org.eclipse.ui.internal.skins.Presentation#setActive(boolean)
100: */
101: public void setActive(boolean isActive) {
102: super .setActive(isActive);
103:
104: updateGradient();
105: }
106:
107: /* (non-Javadoc)
108: * @see org.eclipse.ui.presentations.StackPresentation#dispose()
109: */
110: public void dispose() {
111: preferenceStore
112: .removePropertyChangeListener(propertyChangeListener);
113: super .dispose();
114: }
115:
116: /* (non-Javadoc)
117: * @see org.eclipse.ui.internal.presentations.DefaultPartPresentation#getPartMenu()
118: */
119: protected String getPaneName() {
120: return R21PresentationMessages.getString("ViewPane.moveView"); //$NON-NLS-1$
121: }
122:
123: /* (non-Javadoc)
124: * @see org.eclipse.ui.internal.r21presentation.presentations.R21BasicStackPresentation#drawGradient(org.eclipse.swt.graphics.Color, org.eclipse.swt.graphics.Color[], int[], boolean)
125: */
126:
127: }
|