|
From: <caw...@us...> - 2007-07-18 21:00:19
|
Revision: 2782
http://svn.sourceforge.net/rubyeclipse/?rev=2782&view=rev
Author: cawilliams
Date: 2007-07-18 14:00:18 -0700 (Wed, 18 Jul 2007)
Log Message:
-----------
more type hierarchy junk
Added Paths:
-----------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/ToggleOrientationAction.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/TypeHierarchyMessages.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/viewsupport/SelectionProviderMediator.java
Added: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/ToggleOrientationAction.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/ToggleOrientationAction.java (rev 0)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/ToggleOrientationAction.java 2007-07-18 21:00:18 UTC (rev 2782)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.ui.typehierarchy;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.util.Assert;
+import org.eclipse.ui.PlatformUI;
+import org.rubypeople.rdt.internal.ui.IRubyHelpContextIds;
+import org.rubypeople.rdt.internal.ui.RubyPluginImages;
+
+/**
+ * Toggles the orientationof the layout of the type hierarchy
+ */
+public class ToggleOrientationAction extends Action {
+
+ private TypeHierarchyViewPart fView;
+ private int fActionOrientation;
+
+ public ToggleOrientationAction(TypeHierarchyViewPart v, int orientation) {
+ super("", AS_RADIO_BUTTON); //$NON-NLS-1$
+ if (orientation == TypeHierarchyViewPart.VIEW_ORIENTATION_HORIZONTAL) {
+ setText(TypeHierarchyMessages.ToggleOrientationAction_horizontal_label);
+ setDescription(TypeHierarchyMessages.ToggleOrientationAction_horizontal_description);
+ setToolTipText(TypeHierarchyMessages.ToggleOrientationAction_horizontal_tooltip);
+ RubyPluginImages.setLocalImageDescriptors(this, "th_horizontal.gif"); //$NON-NLS-1$
+ } else if (orientation == TypeHierarchyViewPart.VIEW_ORIENTATION_VERTICAL) {
+ setText(TypeHierarchyMessages.ToggleOrientationAction_vertical_label);
+ setDescription(TypeHierarchyMessages.ToggleOrientationAction_vertical_description);
+ setToolTipText(TypeHierarchyMessages.ToggleOrientationAction_vertical_tooltip);
+ RubyPluginImages.setLocalImageDescriptors(this, "th_vertical.gif"); //$NON-NLS-1$
+ } else if (orientation == TypeHierarchyViewPart.VIEW_ORIENTATION_AUTOMATIC) {
+ setText(TypeHierarchyMessages.ToggleOrientationAction_automatic_label);
+ setDescription(TypeHierarchyMessages.ToggleOrientationAction_automatic_description);
+ setToolTipText(TypeHierarchyMessages.ToggleOrientationAction_automatic_tooltip);
+ RubyPluginImages.setLocalImageDescriptors(this, "th_automatic.gif"); //$NON-NLS-1$
+ } else if (orientation == TypeHierarchyViewPart.VIEW_ORIENTATION_SINGLE) {
+ setText(TypeHierarchyMessages.ToggleOrientationAction_single_label);
+ setDescription(TypeHierarchyMessages.ToggleOrientationAction_single_description);
+ setToolTipText(TypeHierarchyMessages.ToggleOrientationAction_single_tooltip);
+ RubyPluginImages.setLocalImageDescriptors(this, "th_single.gif"); //$NON-NLS-1$
+ } else {
+ Assert.isTrue(false);
+ }
+ fView= v;
+ fActionOrientation= orientation;
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IRubyHelpContextIds.TOGGLE_ORIENTATION_ACTION);
+ }
+
+ public int getOrientation() {
+ return fActionOrientation;
+ }
+
+ /*
+ * @see Action#actionPerformed
+ */
+ public void run() {
+ if (isChecked()) {
+ fView.fOrientation= fActionOrientation;
+ fView.computeOrientation();
+ }
+ }
+
+}
Property changes on: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/ToggleOrientationAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/TypeHierarchyMessages.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/TypeHierarchyMessages.java (rev 0)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/TypeHierarchyMessages.java 2007-07-18 21:00:18 UTC (rev 2782)
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.ui.typehierarchy;
+
+import org.eclipse.osgi.util.NLS;
+
+public final class TypeHierarchyMessages extends NLS {
+
+ private static final String BUNDLE_NAME= TypeHierarchyMessages.class.getName();
+
+ private TypeHierarchyMessages() {
+ // Do not instantiate
+ }
+
+ public static String EnableMemberFilterAction_label;
+ public static String EnableMemberFilterAction_tooltip;
+ public static String EnableMemberFilterAction_description;
+ public static String HistoryDropDownAction_clearhistory_label;
+ public static String ToggleOrientationAction_horizontal_label;
+ public static String ToggleOrientationAction_horizontal_tooltip;
+ public static String ToggleOrientationAction_horizontal_description;
+ public static String ToggleOrientationAction_vertical_label;
+ public static String ToggleOrientationAction_vertical_tooltip;
+ public static String ToggleOrientationAction_vertical_description;
+ public static String ToggleOrientationAction_automatic_label;
+ public static String ToggleOrientationAction_automatic_tooltip;
+ public static String ToggleOrientationAction_automatic_description;
+ public static String ToggleOrientationAction_single_label;
+ public static String ToggleOrientationAction_single_tooltip;
+ public static String ToggleOrientationAction_single_description;
+ public static String FocusOnSelectionAction_label;
+ public static String FocusOnSelectionAction_tooltip;
+ public static String FocusOnSelectionAction_description;
+ public static String FocusOnTypeAction_label;
+ public static String FocusOnTypeAction_tooltip;
+ public static String FocusOnTypeAction_description;
+ public static String FocusOnTypeAction_dialog_title;
+ public static String FocusOnTypeAction_dialog_message;
+ public static String HistoryDropDownAction_tooltip;
+ public static String HistoryAction_description;
+ public static String HistoryAction_tooltip;
+ public static String HistoryListDialog_title;
+ public static String HistoryListDialog_label;
+ public static String HistoryListDialog_remove_button;
+ public static String HistoryListAction_label;
+ public static String ShowInheritedMembersAction_label;
+ public static String ShowInheritedMembersAction_tooltip;
+ public static String ShowInheritedMembersAction_description;
+ public static String ShowQualifiedTypeNamesAction_label;
+ public static String ShowQualifiedTypeNamesAction_tooltip;
+ public static String ShowQualifiedTypeNamesAction_description;
+ public static String SortByDefiningTypeAction_label;
+ public static String SortByDefiningTypeAction_tooltip;
+ public static String SortByDefiningTypeAction_description;
+ public static String SubTypeHierarchyViewer_title;
+ public static String SubTypeHierarchyViewer_filtered_title;
+ public static String SuperTypeHierarchyViewer_title;
+ public static String SuperTypeHierarchyViewer_filtered_title;
+ public static String TraditionalHierarchyViewer_title;
+ public static String TraditionalHierarchyViewer_filtered_title;
+ public static String TypeHierarchyViewPart_error_title;
+ public static String TypeHierarchyViewPart_error_message;
+ public static String TypeHierarchyViewPart_empty;
+ public static String TypeHierarchyViewPart_nodecl;
+ public static String TypeHierarchyViewPart_exception_title;
+ public static String TypeHierarchyViewPart_exception_message;
+ public static String TypeHierarchyViewPart_title;
+ public static String TypeHierarchyViewPart_tooltip;
+ public static String TypeHierarchyViewPart_ws_title;
+ public static String TypeHierarchyViewPart_ws_tooltip;
+ public static String TypeHierarchyViewPart_restoreinput;
+ public static String TypeHierarchyViewPart_layout_submenu;
+ public static String ToggleViewAction_subtypes_label;
+ public static String ToggleViewAction_subtypes_tooltip;
+ public static String ToggleViewAction_subtypes_description;
+ public static String ToggleViewAction_supertypes_label;
+ public static String ToggleViewAction_supertypes_tooltip;
+ public static String ToggleViewAction_supertypes_description;
+ public static String ToggleViewAction_vajhierarchy_label;
+ public static String ToggleViewAction_vajhierarchy_tooltip;
+ public static String ToggleViewAction_vajhierarchy_description;
+ public static String HierarchyInformationControl_methodhierarchy_label;
+ public static String HierarchyInformationControl_hierarchy_label;
+ public static String HierarchyInformationControl_toggle_traditionalhierarchy_label;
+ public static String HierarchyInformationControl_toggle_superhierarchy_label;
+
+ static {
+ NLS.initializeMessages(BUNDLE_NAME, TypeHierarchyMessages.class);
+ }
+}
Property changes on: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/typehierarchy/TypeHierarchyMessages.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/viewsupport/SelectionProviderMediator.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/viewsupport/SelectionProviderMediator.java (rev 0)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/viewsupport/SelectionProviderMediator.java 2007-07-18 21:00:18 UTC (rev 2782)
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.rubypeople.rdt.internal.ui.viewsupport;
+
+import org.eclipse.core.runtime.ListenerList;
+
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Widget;
+
+import org.eclipse.jface.util.Assert;
+import org.eclipse.jface.viewers.IPostSelectionProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+
+/**
+ * A selection provider for view parts with more that one viewer.
+ * Tracks the focus of the viewers to provide the correct selection.
+ */
+public class SelectionProviderMediator implements IPostSelectionProvider {
+
+ private class InternalListener implements ISelectionChangedListener, FocusListener {
+ /*
+ * @see ISelectionChangedListener#selectionChanged
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ doSelectionChanged(event);
+ }
+
+ /*
+ * @see FocusListener#focusGained
+ */
+ public void focusGained(FocusEvent e) {
+ doFocusChanged(e.widget);
+ }
+
+ /*
+ * @see FocusListener#focusLost
+ */
+ public void focusLost(FocusEvent e) {
+ // do not reset due to focus behavior on GTK
+ //fViewerInFocus= null;
+ }
+ }
+
+ private class InternalPostSelectionListener implements ISelectionChangedListener {
+ public void selectionChanged(SelectionChangedEvent event) {
+ doPostSelectionChanged(event);
+ }
+
+ }
+
+ private StructuredViewer[] fViewers;
+
+ private StructuredViewer fViewerInFocus;
+ private ListenerList fSelectionChangedListeners;
+ private ListenerList fPostSelectionChangedListeners;
+
+ /**
+ * @param viewers All viewers that can provide a selection
+ * @param viewerInFocus the viewer currently in focus or <code>null</code>
+ */
+ public SelectionProviderMediator(StructuredViewer[] viewers, StructuredViewer viewerInFocus) {
+ Assert.isNotNull(viewers);
+ fViewers= viewers;
+ InternalListener listener= new InternalListener();
+ fSelectionChangedListeners= new ListenerList();
+ fPostSelectionChangedListeners= new ListenerList();
+ fViewerInFocus= viewerInFocus;
+
+ for (int i= 0; i < fViewers.length; i++) {
+ StructuredViewer viewer= fViewers[i];
+ viewer.addSelectionChangedListener(listener);
+ viewer.addPostSelectionChangedListener(new InternalPostSelectionListener());
+ Control control= viewer.getControl();
+ control.addFocusListener(listener);
+ }
+ }
+
+ private void doFocusChanged(Widget control) {
+ for (int i= 0; i < fViewers.length; i++) {
+ if (fViewers[i].getControl() == control) {
+ propagateFocusChanged(fViewers[i]);
+ return;
+ }
+ }
+ }
+
+ final void doPostSelectionChanged(SelectionChangedEvent event) {
+ ISelectionProvider provider= event.getSelectionProvider();
+ if (provider == fViewerInFocus) {
+ firePostSelectionChanged();
+ }
+ }
+
+ final void doSelectionChanged(SelectionChangedEvent event) {
+ ISelectionProvider provider= event.getSelectionProvider();
+ if (provider == fViewerInFocus) {
+ fireSelectionChanged();
+ }
+ }
+
+ final void propagateFocusChanged(StructuredViewer viewer) {
+ if (viewer != fViewerInFocus) { // OK to compare by identity
+ fViewerInFocus= viewer;
+ fireSelectionChanged();
+ firePostSelectionChanged();
+ }
+ }
+
+ private void fireSelectionChanged() {
+ if (fSelectionChangedListeners != null) {
+ SelectionChangedEvent event= new SelectionChangedEvent(this, getSelection());
+
+ Object[] listeners= fSelectionChangedListeners.getListeners();
+ for (int i= 0; i < listeners.length; i++) {
+ ISelectionChangedListener listener= (ISelectionChangedListener) listeners[i];
+ listener.selectionChanged(event);
+ }
+ }
+ }
+
+ private void firePostSelectionChanged() {
+ if (fPostSelectionChangedListeners != null) {
+ SelectionChangedEvent event= new SelectionChangedEvent(this, getSelection());
+
+ Object[] listeners= fPostSelectionChangedListeners.getListeners();
+ for (int i= 0; i < listeners.length; i++) {
+ ISelectionChangedListener listener= (ISelectionChangedListener) listeners[i];
+ listener.selectionChanged(event);
+ }
+ }
+ }
+
+ /*
+ * @see ISelectionProvider#addSelectionChangedListener
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ fSelectionChangedListeners.add(listener);
+ }
+
+ /*
+ * @see ISelectionProvider#removeSelectionChangedListener
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ fSelectionChangedListeners.remove(listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IPostSelectionProvider#addPostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+ */
+ public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
+ fPostSelectionChangedListeners.add(listener);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IPostSelectionProvider#removePostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+ */
+ public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
+ fPostSelectionChangedListeners.remove(listener);
+ }
+
+ /*
+ * @see ISelectionProvider#getSelection
+ */
+ public ISelection getSelection() {
+ if (fViewerInFocus != null) {
+ return fViewerInFocus.getSelection();
+ }
+ return StructuredSelection.EMPTY;
+ }
+
+ /*
+ * @see ISelectionProvider#setSelection
+ */
+ public void setSelection(ISelection selection) {
+ if (fViewerInFocus != null) {
+ fViewerInFocus.setSelection(selection);
+ }
+ }
+
+ public void setSelection(ISelection selection, boolean reveal) {
+ if (fViewerInFocus != null) {
+ fViewerInFocus.setSelection(selection, reveal);
+ }
+ }
+
+ /**
+ * Returns the viewer in focus or null if no viewer has the focus
+ */
+ public StructuredViewer getViewerInFocus() {
+ return fViewerInFocus;
+ }
+}
Property changes on: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/viewsupport/SelectionProviderMediator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|