|
From: <caw...@us...> - 2007-07-25 17:40:46
|
Revision: 2851
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2851&view=rev
Author: cawilliams
Date: 2007-07-25 10:40:43 -0700 (Wed, 25 Jul 2007)
Log Message:
-----------
break out UI related items into new com.aptana.rdt.ui plugin
Added Paths:
-----------
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RefreshGemsActionDelegate.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RemoveGemActionDelegate.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateAllActionDelegate.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateGemActionDelegate.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemContentProvider.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemLabelProvider.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.properties
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsView.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/RemoveGemDialog.java
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2005 RadRails.org and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package com.aptana.rdt.internal.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.ui.gems.InstallGemDialog;
+
+/**
+ * Install a gem
+ *
+ * @author cwilliams
+ */
+public class InstallGemActionDelegate implements IObjectActionDelegate, IViewActionDelegate {
+
+ /**
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
+ * org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ InstallGemDialog dialog = new InstallGemDialog(Display.getCurrent().getActiveShell());
+ if (dialog.open() == Dialog.OK) {
+ final Gem gem = dialog.getGem();
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ AptanaRDTPlugin.getDefault().getGemManager().installGem(gem);
+ }
+ });
+ }
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ action.setEnabled(!AptanaRDTPlugin.getDefault().getGemManager().getRemoteGems().isEmpty());
+ }
+
+ /**
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ }
+
+
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RefreshGemsActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RefreshGemsActionDelegate.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RefreshGemsActionDelegate.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2005 RadRails.org and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package com.aptana.rdt.internal.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.internal.core.gems.GemManager;
+
+/**
+ * Install a gem
+ *
+ * @author cwilliams
+ */
+public class RefreshGemsActionDelegate implements IObjectActionDelegate,
+ IViewActionDelegate {
+
+ /**
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
+ * org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ if (!AptanaRDTPlugin.getDefault().getGemManager().refresh()) {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), "Unable to refresh local gems", "Sorry we were unable to refresh the list of local gems.");
+ }
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RefreshGemsActionDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RemoveGemActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RemoveGemActionDelegate.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RemoveGemActionDelegate.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2005 RadRails.org and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package com.aptana.rdt.internal.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.internal.core.gems.GemManager;
+import com.aptana.rdt.ui.gems.GemsMessages;
+import com.aptana.rdt.ui.gems.GemsView;
+
+/**
+ * Install a gem
+ *
+ * @author cwilliams
+ */
+public class RemoveGemActionDelegate implements IObjectActionDelegate, IViewActionDelegate {
+
+ private IViewPart view;
+ private Gem selectedGem;
+
+ /**
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
+ * org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ boolean okay = MessageDialog.openConfirm(view.getViewSite()
+ .getShell(), null, GemsMessages.bind(GemsMessages.RemoveGemDialog_msg, selectedGem.getName()));
+ if (!okay) return;
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ AptanaRDTPlugin.getDefault().getGemManager().removeGem(selectedGem);
+ }
+
+ });
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ if (view instanceof GemsView) {
+ if (selection != null && !selection.isEmpty()) {
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection sel = (IStructuredSelection) selection;
+ Object element = sel.getFirstElement();
+ if (element instanceof Gem) {
+ this.selectedGem = (Gem) element;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ this.view = view;
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/RemoveGemActionDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateAllActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateAllActionDelegate.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateAllActionDelegate.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2005 RadRails.org and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package com.aptana.rdt.internal.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.internal.core.gems.GemManager;
+
+/**
+ * Install a gem
+ *
+ * @author cwilliams
+ */
+public class UpdateAllActionDelegate implements IObjectActionDelegate, IViewActionDelegate {
+
+
+ /**
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
+ * org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ AptanaRDTPlugin.getDefault().getGemManager().updateAll();
+ }
+
+ });
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateAllActionDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateGemActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateGemActionDelegate.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateGemActionDelegate.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2005 RadRails.org and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package com.aptana.rdt.internal.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.internal.core.gems.GemManager;
+import com.aptana.rdt.ui.gems.GemsView;
+
+/**
+ * Install a gem
+ *
+ * @author cwilliams
+ */
+public class UpdateGemActionDelegate implements IObjectActionDelegate, IViewActionDelegate {
+
+ private IViewPart view;
+ private Gem selectedGem;
+
+ /**
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
+ * org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ AptanaRDTPlugin.getDefault().getGemManager().update(selectedGem);
+ }
+
+ });
+ }
+
+ /**
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ if (view instanceof GemsView) {
+ if (selection != null && !selection.isEmpty()) {
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection sel = (IStructuredSelection) selection;
+ Object element = sel.getFirstElement();
+ if (element instanceof Gem) {
+ this.selectedGem = (Gem) element;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ this.view = view;
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/UpdateGemActionDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemContentProvider.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemContentProvider.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemContentProvider.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,25 @@
+package com.aptana.rdt.ui.gems;
+
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+public class GemContentProvider implements IStructuredContentProvider {
+
+ public Object[] getElements(Object inputElement) {
+ Object[] res = null;
+ if (inputElement instanceof Collection) {
+ res = ((Collection) inputElement).toArray();
+ }
+
+ return res;
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemContentProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemLabelProvider.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemLabelProvider.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemLabelProvider.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,36 @@
+package com.aptana.rdt.ui.gems;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+import com.aptana.rdt.core.gems.Gem;
+
+public class GemLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ private static final int NAME_COLUMN = 0;
+ private static final int VERSION_COLUMN = 1;
+ private static final int DESCRIPTION_COLUMN = 2;
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ Gem server = (Gem) element;
+
+ switch (columnIndex) {
+ case NAME_COLUMN:
+ return server.getName();
+ case VERSION_COLUMN:
+ return server.getVersion();
+ case DESCRIPTION_COLUMN:
+ return server.getDescription();
+ default:
+ return "";
+ }
+ }
+
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemLabelProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,25 @@
+package com.aptana.rdt.ui.gems;
+
+import org.eclipse.osgi.util.NLS;
+
+public class GemsMessages extends NLS {
+
+ private static final String BUNDLE_NAME = GemsMessages.class.getName();
+
+ public static String GemsView_NameColumn_label;
+ public static String GemsView_VersionColumn_label;
+ public static String GemsView_DescriptionColumn_label;
+ public static String InstallGemDialog_dialog_title;
+ public static String InstallGemDialog_version_label;
+ public static String InstallGemDialog_name_label;
+ public static String GemManager_loading_local_gems;
+ public static String GemManager_loading_remote_gems;
+ public static String RemoveGemDialog_msg;
+ public static String RemoveGemDialog_dialog_title;
+ public static String RemoveGemDialog_version_label;
+
+ static {
+ NLS.initializeMessages(BUNDLE_NAME, GemsMessages.class);
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.properties
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.properties (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.properties 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,15 @@
+GemsView_NameColumn_label=Name
+GemsView_VersionColumn_label=Version
+GemsView_DescriptionColumn_label=Description
+
+InstallGemDialog_dialog_title=Install a gem
+InstallGemDialog_version_label=Version:
+InstallGemDialog_name_label=Gem Name:
+
+GemManager_loading_local_gems=Loading local gem information
+GemManager_loading_remote_gems=Loading remote gem information
+
+RemoveGemDialog_msg=Are you sure you want to remove the gem {0}?
+
+RemoveGemDialog_version_label=Version:
+RemoveGemDialog_dialog_title=Which Version?
\ No newline at end of file
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsMessages.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsView.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsView.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsView.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,159 @@
+package com.aptana.rdt.ui.gems;
+
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.part.ViewPart;
+import org.rubypeople.rdt.ui.TableViewerSorter;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.core.gems.GemListener;
+import com.aptana.rdt.internal.core.gems.GemManager;
+
+public class GemsView extends ViewPart implements GemListener {
+
+ private TableViewer gemViewer;
+
+ @Override
+ public void createPartControl(Composite parent) {
+ parent.setLayout(new GridLayout());
+
+ gemViewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION);
+ final Table gemTable = gemViewer.getTable();
+ gemTable.setHeaderVisible(true);
+ gemTable.setLinesVisible(false);
+ gemTable.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ gemTable.addKeyListener(new KeyListener() {
+
+ public void keyReleased(KeyEvent e) {
+ // ignore
+ }
+
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == SWT.DEL) {
+ TableItem item = gemTable.getItem(gemTable.getSelectionIndex());
+ Gem gem = (Gem) item.getData();
+ if (MessageDialog.openConfirm(gemTable.getShell(), null, GemsMessages.bind(GemsMessages.RemoveGemDialog_msg, gem.getName()))) {
+ AptanaRDTPlugin.getDefault().getGemManager().removeGem(gem);
+ }
+ }
+ }
+
+ });
+
+ TableColumn nameColumn = new TableColumn(gemTable, SWT.LEFT);
+ nameColumn.setText(GemsMessages.GemsView_NameColumn_label);
+ nameColumn.setWidth(150);
+
+ TableColumn versionColumn = new TableColumn(gemTable, SWT.LEFT);
+ versionColumn.setText(GemsMessages.GemsView_VersionColumn_label);
+ versionColumn.setWidth(75);
+
+ TableColumn descriptionColumn = new TableColumn(gemTable, SWT.LEFT);
+ descriptionColumn
+ .setText(GemsMessages.GemsView_DescriptionColumn_label);
+ descriptionColumn.setWidth(275);
+
+ gemViewer.setLabelProvider(new GemLabelProvider());
+ gemViewer.setContentProvider(new GemContentProvider());
+ TableViewerSorter.bind(gemViewer);
+ getSite().setSelectionProvider(gemViewer);
+
+
+ gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getGems());
+ createPopupMenu();
+
+ AptanaRDTPlugin.getDefault().getGemManager().addGemListener(this);
+ }
+
+ @Override
+ public void setFocus() {
+ // do nothing
+ }
+
+ /**
+ * Creates and registers the context menu
+ */
+ private void createPopupMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ IContributionItem[] items = getViewSite().getActionBars()
+ .getToolBarManager().getItems();
+ for (int i = 0; i < items.length; i++) {
+ if (items[i] instanceof ActionContributionItem) {
+ ActionContributionItem aci = (ActionContributionItem) items[i];
+ manager.add(aci.getAction());
+ }
+ }
+ }
+ });
+ menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); // Allow
+ // other
+ // plugins
+ // to
+ // add
+ // here
+ Menu menu = menuMgr.createContextMenu(gemViewer.getControl());
+ gemViewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, gemViewer);
+ }
+
+ public void gemsRefreshed() {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getGems());
+ gemViewer.refresh();
+ }
+
+ });
+
+ }
+
+ public void gemAdded(final Gem gem) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getGems());
+ }
+
+ });
+ }
+
+ public void gemRemoved(final Gem gem) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getGems());
+ }
+
+ });
+ }
+
+ public void managerInitialized() {
+ // ignore
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/GemsView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,177 @@
+package com.aptana.rdt.ui.gems;
+
+import java.util.SortedSet;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+import org.rubypeople.rdt.ui.TableViewerSorter;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.internal.core.gems.GemManager;
+import com.aptana.rdt.internal.core.gems.LogicalGem;
+
+public class InstallGemDialog extends Dialog {
+
+ private Text nameText;
+ private Combo versionCombo;
+
+ private String name;
+ private String version;
+
+ private boolean filterByText = true;
+
+ private TableViewer gemViewer;
+ private GemContentProvider contentProvider;
+
+ public InstallGemDialog(Shell parentShell) {
+ super(parentShell);
+ contentProvider = new GemContentProvider();
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ getShell().setText(GemsMessages.InstallGemDialog_dialog_title);
+ Composite control = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ control.setLayout(layout);
+
+ Label nameLabel = new Label(control, SWT.LEFT);
+ nameLabel.setText(GemsMessages.InstallGemDialog_name_label);
+
+ nameText = new Text(control, SWT.BORDER);
+ GridData nameTextData = new GridData();
+ nameTextData.widthHint = 150;
+ nameText.setLayoutData(nameTextData);
+ nameText.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ if (filterByText) {
+ getShell().getDisplay().syncExec(new Runnable() {
+
+ public void run() {
+ gemViewer.refresh();
+ }
+ });
+ }
+ filterByText = true;
+ }
+
+ });
+
+ Label versionLabel = new Label(control, SWT.LEFT);
+ versionLabel.setText(GemsMessages.InstallGemDialog_version_label);
+
+ versionCombo = new Combo(control, SWT.DROP_DOWN);
+ GridData versionComboData = new GridData();
+ versionComboData.widthHint = 100;
+ versionCombo.setLayoutData(versionComboData);
+
+ gemViewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION);
+ Table serverTable = gemViewer.getTable();
+ serverTable.setHeaderVisible(true);
+ serverTable.setLinesVisible(false);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.heightHint = 400;
+ serverTable.setLayoutData(data);
+
+ TableColumn nameColumn = new TableColumn(serverTable, SWT.LEFT);
+ nameColumn.setText(GemsMessages.GemsView_NameColumn_label);
+ nameColumn.setWidth(150);
+
+ TableColumn versionColumn = new TableColumn(serverTable, SWT.LEFT);
+ versionColumn.setText(GemsMessages.GemsView_VersionColumn_label);
+ versionColumn.setWidth(75);
+
+ TableColumn descriptionColumn = new TableColumn(serverTable, SWT.LEFT);
+ descriptionColumn
+ .setText(GemsMessages.GemsView_DescriptionColumn_label);
+ descriptionColumn.setWidth(275);
+
+ gemViewer.setLabelProvider(new GemLabelProvider());
+ gemViewer.setContentProvider(contentProvider);
+ TableViewerSorter.bind(gemViewer);
+ gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getRemoteGems());
+ gemViewer.addFilter(new MyViewerFilter(nameText));
+
+ gemViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection structured = (IStructuredSelection) selection;
+ LogicalGem gem = (LogicalGem) structured.getFirstElement();
+ SortedSet<String> versions = gem.getVersions();
+ filterByText = false; // don't filter list when I programmatically set text
+ nameText.setText(gem.getName());
+ versionCombo.removeAll();
+ String lastVersion = null;
+ for (String version : versions) {
+ versionCombo.add(version);
+ lastVersion = version;
+ }
+ versionCombo.setText(lastVersion);
+ }
+ }
+
+ });
+
+ return control;
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
+ */
+ public void buttonPressed(int buttonId) {
+ if (buttonId == IDialogConstants.OK_ID) {
+ name = nameText.getText();
+ version = versionCombo.getText();
+ okPressed();
+ } else if (buttonId == IDialogConstants.CANCEL_ID) {
+ cancelPressed();
+ }
+ }
+
+ public Gem getGem() {
+ return new Gem(name, version, "");
+ }
+
+ private static class MyViewerFilter extends ViewerFilter {
+
+ private Text text;
+
+ public MyViewerFilter(Text text) {
+ this.text = text;
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ Gem gem = (Gem) element;
+ // TODO If there's no text show nothing?
+ return gem.getName().toLowerCase().startsWith(text.getText().toLowerCase());
+ }
+
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/RemoveGemDialog.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/RemoveGemDialog.java (rev 0)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/RemoveGemDialog.java 2007-07-25 17:40:43 UTC (rev 2851)
@@ -0,0 +1,70 @@
+package com.aptana.rdt.ui.gems;
+
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class RemoveGemDialog extends Dialog {
+
+ private Combo versionCombo;
+ private String version;
+ private List<String> versions;
+
+ public RemoveGemDialog(Shell parentShell, List<String> versions) {
+ super(parentShell);
+ this.versions = versions;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ getShell().setText(GemsMessages.RemoveGemDialog_dialog_title);
+
+ Composite control = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ control.setLayout(layout);
+
+ Label versionLabel = new Label(control, SWT.LEFT);
+ versionLabel.setText(GemsMessages.RemoveGemDialog_version_label);
+
+ versionCombo = new Combo(control, SWT.DROP_DOWN);
+ GridData versionComboData = new GridData();
+ versionComboData.widthHint = 100;
+ versionCombo.setLayoutData(versionComboData);
+
+ for (String version : versions) {
+ versionCombo.add(version);
+ }
+ // Set the oldest version as default option
+ if (versions != null && !versions.isEmpty()) {
+ versionCombo.select(versions.size() - 1);
+ }
+ return control;
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
+ */
+ public void buttonPressed(int buttonId) {
+ if (buttonId == IDialogConstants.OK_ID) {
+ version = versionCombo.getText();
+ okPressed();
+ } else if (buttonId == IDialogConstants.CANCEL_ID) {
+ cancelPressed();
+ }
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+}
Property changes on: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/RemoveGemDialog.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.
|