speichern funktion aktivieren

Status
Nicht offen für weitere Antworten.

Spot84

Aktives Mitglied
Hallo!
Hab schon wieder ein neues Problem.. :(
ich habe eine Eclipse RCP-Applikation geschrieben die 2 UML-Diagramme einliest und diese miteinander vergleicht.
Die Modelle können mit hilfe eines Editors auch miteinander gemischt werden.
Umgesetzt habe ich es so das ich einen neuen command erstelle, der einen FileDialog aufruft um die 2 Modelldateien einzulesen. Wenn die Dateien dann eingelesen wurden, rufe ich den Verglieichseditor über die folgenden Zeilen auf:
Code:
ModelCompareEditorInput input = new ModelCompareEditorInput(
					snapshot);
CompareUI.openCompareEditor(input);

Der Filedialog und der aufruf des Vergleichseditors sind beide in ein und der selben Klasse die von AbstractHandler erbt.

Mein Problem ist jetzt das ich die Modelle die gemischt werden können, auch gerne abspeichern möchte.
Ich hab dafür gelesen das meine View das Interface ISaveablePart implementieren muss, damit die save-action merkt, wenn etwas geändert wurde. Nur wie mach ich das in meinem Fall? Ich hab nicht einmal eine View definiert, da ich den Vergleichseditor einfach über die Klasse aufrufe.

Hat da villeicht einer eine Idee?
 
Zuletzt bearbeitet:

Spot84

Aktives Mitglied
Kann mir denn villeicht wer sagen wie ich allgemein ein Plugin was einen Editor enthält dazu bringe es mit der Speicheraktion zu verknüpfen? Oder ist es möglich die Speicherfunktion für eine gerade aktive IWorkbenchpage zu aktivieren?

Die Api für den Comparisoneditor hab ich unter

http://help.eclipse.org/help32/inde...erence/api/org/eclipse/compare/CompareUI.html

gefunden, und hier gibt es die Methode openCompareEditorOnPage(CompareEditorInput input, IWorkbenchPage page).

Möglich sein muss das ganze ja da das EmfComparePlugin ebenfalls diesen Editor nutzt und Modelle speichern kann.
Hab jetzt auch schon in der EclipseRCP-Newsgroups nachgefragt, aber da konnte mir auch niemand helfen.. :(
 

Wildcard

Top Contributor
Warum erweiterst du den EMF Compare Editor nicht? Der Editor ist eigentlich selbst dafür zuständig solche global actions zu verarbeiten.
 

Spot84

Aktives Mitglied
Hallo Wildcard!
ja, ich wolte auch schon probieren den Editor anzupassen. Allerdings wusste ich nicht genau wie ich das machen solte. Die Methode CompareUI.openCompareEditor(input); ruft die gleichnamige Methode in der Klasse CompareUIPlugin.class auf:
Code:
/**
	 * Performs the comparison described by the given input and opens a
	 * compare editor on the result.
	 *
	 * @param input the input on which to open the compare editor
	 * @param page the workbench page on which to create a new compare editor
	 * @param editor if not null the input is opened in this editor
	 * @see CompareEditorInput
	 */
	public void openCompareEditor(final CompareEditorInput input, 
final IWorkbenchPage page, final IReusableEditor editor) {
		CompareConfiguration configuration = input.getCompareConfiguration();
		if (configuration != null) {
			IPreferenceStore ps= configuration.getPreferenceStore();
			if (ps != null)
				configuration.setProperty(
						CompareConfiguration.USE_OUTLINE_VIEW, 
						Boolean.valueOf(
ps.getBoolean(ComparePreferencePage.USE_OUTLINE_VIEW)));
		}
		if (input.canRunAsJob()) {
			openEditorInBackground(input, page, editor);
		} else {
			if (compareResultOK(input, null)) {
				internalOpenEditor(input, page, editor);
			}
		}
	}

diese wiederum enthält die 2 privaten Methoden openEditorInBackground und internalOpenEditor die so aussehen:
Code:
private void openEditorInBackground(final CompareEditorInput input,
			final IWorkbenchPage page, final IReusableEditor editor) {
		internalOpenEditor(input, page, editor);
	}

	private void internalOpenEditor(final CompareEditorInput input,
			final IWorkbenchPage wp, final IReusableEditor editor) {
		Runnable runnable = new Runnable() {
			public void run() {
				if (editor != null && !editor.getSite().getShell().isDisposed()) {// reuse the given editor
					editor.setInput(input);
					return;
				}
				
				IWorkbenchPage page = wp;
				if (page == null)
					page= getActivePage();
				if (page != null) {
					// open new CompareEditor on page
					try {
						page.openEditor(input, COMPARE_EDITOR);
					} catch (PartInitException e) {
MessageDialog.openError(getShell(), Utilities.getString("CompareUIPlugin.openEditorError"), e.getMessage()); 
					}		
				} else {
					MessageDialog.openError(getShell(),
							Utilities.getString("CompareUIPlugin.openEditorError"), 
							Utilities.getString("CompareUIPlugin.noActiveWorkbenchPage")); 
				}
			}
		};
		syncExec(runnable);
	}

das hat mich allerdings nicht weitergebracht, da ich in den Funktionen nicht sehe wie ich sie anpassen könnte.Was ich im Netz gefunden hab um die Speicherfunktion in RCP-Applikationen zu aktivieren, ist immer nur das die eigene View ISaveablePart implementieren soll.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Variablen speichern? Plattformprogrammierung 2
B RCP Projekt settings speichern Plattformprogrammierung 2
P RCP An Datei speichern (Protokolldatei) Plattformprogrammierung 2
TheWhiteShadow RCP Editor Inhalt speichern Plattformprogrammierung 3
G RCP Resource in User home speichern Plattformprogrammierung 3
D Plugin - Properties ohne PropertyPage speichern Plattformprogrammierung 11
H GEF Modell/Diagramm im XML-Format speichern Plattformprogrammierung 6
musiKk RCP Eclipse: Speichern von Spaltenbreiten Plattformprogrammierung 9
L RCP JFace Treeviewer speichern? Plattformprogrammierung 6
T Speichern eines Objectes in einem Editor (mit isDirty) Plattformprogrammierung 6
S View speichern/laden beim schließen Plattformprogrammierung 14
S TableView einstellungen speichern Plattformprogrammierung 5
B Simple Action beim Speichern in Eclipse... Plattformprogrammierung 2
T GEF: Speichern Plattformprogrammierung 6
N Speichern von Einstellung Plattformprogrammierung 6
K Position einer Multiple View speichern Plattformprogrammierung 6
N Eclipse RCP: Perspektiven speichern Plattformprogrammierung 6
G Eclipse Update-Funktion erweitern/überarbeiten Plattformprogrammierung 6
lumo RCP Beim wechsel der Perspektive automatisch Views aktivieren Plattformprogrammierung 6
dzim RCP Aktivieren/Deaktivieren von Toolbar-Items Plattformprogrammierung 12
lumo View aktivieren jedesmal wen.... Plattformprogrammierung 7
H Actions bzw. Actionsets (de)aktivieren Plattformprogrammierung 8

Ähnliche Java Themen


Oben