git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[EGIT PATCH 5/6] Create baseclasses for actions and operations on RevObjects

From
Robin Rosenberg <robin.rosenberg@dewire.com>
Date
Jul 10, 2008, 22:39 UTC
Message-ID
<1215729573-26536-6-git-send-email-robin.rosenberg@dewire.com>
In-Reply-To
<1215729573-26536-5-git-send-email-robin.rosenberg@dewire.com>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
 .../internal/actions/AbstractOperationAction.java  |   15 +++++++----
 .../internal/actions/AbstractRevObjectAction.java  |   26 ++++++++++++++++++++
 .../actions/AbstractRevObjectOperation.java        |   21 ++++++++++++++++
 3 files changed, 57 insertions(+), 5 deletions(-)
 create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectAction.java
 create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectOperation.java
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractOperationAction.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractOperationAction.java
index be6d0d5..52f60f5 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractOperationAction.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractOperationAction.java
@@ -32,11 +32,20 @@ import org.spearce.egit.ui.UIText;
  * Common functionality for EGit operations.
  */
 public abstract class AbstractOperationAction implements IObjectActionDelegate {
-	private IWorkbenchPart wp;
+	/**
+	 * The active workbench part
+	 */
+	protected IWorkbenchPart wp;
 
 	private IWorkspaceRunnable op;
 
 	public void selectionChanged(final IAction act, final ISelection sel) {
+		// work performed in setActivePart
+	}
+
+	public void setActivePart(final IAction act, final IWorkbenchPart part) {
+		wp = part;
+		ISelection sel = part.getSite().getPage().getSelection();
 		final List selection;
 		if (sel instanceof IStructuredSelection && !sel.isEmpty()) {
 			selection = ((IStructuredSelection) sel).toList();
@@ -47,10 +56,6 @@ public abstract class AbstractOperationAction implements IObjectActionDelegate {
 		act.setEnabled(op != null && wp != null);
 	}
 
-	public void setActivePart(final IAction act, final IWorkbenchPart part) {
-		wp = part;
-	}
-
 	/**
 	 * Instantiate an operation on an action on provided objects.
 	 *
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectAction.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectAction.java
new file mode 100644
index 0000000..b7f4285
--- /dev/null
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectAction.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * See LICENSE for the full license text, also available.
+ *******************************************************************************/
+package org.spearce.egit.ui.internal.actions;
+
+import org.spearce.egit.ui.internal.history.RevObjectSelectionProvider;
+import org.spearce.jgit.lib.Repository;
+
+abstract class AbstractRevObjectAction extends AbstractOperationAction {
+
+	/**
+	 * Find out which repository is involved here
+	 *
+	 * @return the Git repository associated with the selected RevObject
+	 */
+	protected Repository getActiveRepository() {
+		RevObjectSelectionProvider selectionProvider = (RevObjectSelectionProvider) wp
+				.getSite().getSelectionProvider();
+		return selectionProvider.getActiveRepository();
+	}
+
+}
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectOperation.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectOperation.java
new file mode 100644
index 0000000..0c5d570
--- /dev/null
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/AbstractRevObjectOperation.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * See LICENSE for the full license text, also available.
+ *******************************************************************************/
+package org.spearce.egit.ui.internal.actions;
+
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.spearce.jgit.lib.Repository;
+
+abstract class AbstractRevObjectOperation implements IWorkspaceRunnable {
+
+	Repository repository;
+
+	AbstractRevObjectOperation(final Repository repository) {
+		this.repository = repository;
+	}
+
+}
-- 
1.5.6.2.220.g44701
Previous: Robin RosenbergNext: Robin Rosenberg
Message 6 of 10 in “RevObject selection handler”
  1. 0/6 RevObject selection handlerRobin Rosenberg, Jul 10, 2008
  2. 1/6 Create a selection handler for the revision graph.Robin Rosenberg, Jul 10, 2008
  3. 2/6 Using the page site selection turned out to be cumbersome.Robin Rosenberg, Jul 10, 2008
  4. 3/6 Adapt Git team operations to non-resouce objectsRobin Rosenberg, Jul 10, 2008
  5. 4/6 Teach the revision selection handler about the active repositoryRobin Rosenberg, Jul 10, 2008
  6. 5/6 Create baseclasses for actions and operations on RevObjectsRobin Rosenberg, Jul 10, 2008
  7. 6/6 Add actions in history view to perform reset actionsRobin Rosenberg, Jul 10, 2008
  8. Shawn O. PearceJul 11, 2008
  9. Shawn O. PearceJul 11, 2008
  10. Johannes SchindelinJul 11, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.