GMF Property View

Status
Nicht offen für weitere Antworten.

Tomas

Bekanntes Mitglied
hi,
ich hab ne frage wie ich in gmf meine eigene property page erstelle. ich habe Vierecke und ich will als anfang mal x y height und width in der Property View darstellen. da es aber nicht so viele gute anleitungen gibt, komm ich nicht weiter.
wer ne ahung?

danke
 
so ich hab ein Problem mit dem Adapter der PropertyView. Ich habe "Elemente" die 0-* ElementEvents (bestehend aus 2 strings, prop und value) besitzen. ich habe schon einen neuen Tab für die Propertypage nur weiß ich nicht wie ich es im Model gestallten soll, um in der Propertyview für jedes Stringpaar 1 "Schlüsselwertepaarpropertyteil" zu bekommen. (1. String name der Property, 2. String beschreibung). Diese Events sollen nur angezeigt werden, bearbeitet gehört es nicht.
Man kann sagen, dass eine Dynamische PropertyView aufgebaut werden soll, da anzahl der Events nicht vorrauszusagen ist.

[Java]
@Override
public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
if (itemPropertyDescriptors == null) {
super.getPropertyDescriptors(object);
//addPropPropertyDescriptor(object);
//addValuePropertyDescriptor(object);
addEvents(object);
}
// addElementEventsPropertyDescriptor(((RectangleImpl)
// object).getElementEvents());
// addPropPropertyDescriptor(((RectangleImpl)
// object).getElementEvents().getProp());
// addValuePropertyDescriptor(((RectangleImpl)
// object).getElementEvents().getValue());

return itemPropertyDescriptors;
}

protected void addEvents(Object object) {
ElementEvents ee = ((RectangleImpl) object).getElementEvents();
for (int i = 0; i < ee.getProp().size(); i++) {
IItemPropertyDescriptor eventsPropertyDescriptor = new ElementEventPropertyDescriptor(
((ComposeableAdapterFactory) adapterFactory)
.getRootAdapterFactory(),
getResourceLocator(),
ee.getProp().get(i),
// getString("_UI_ElementEvents_type"),
getString("_UI_PropertyDescriptor_description",
"_UI_ElementEvents_prop_feature",
"_UI_ElementEvents_type"),
MypropertiesPackage.Literals.ELEMENT_EVENTS__VALUE, false,
true, false, ItemPropertyDescriptor.TEXT_VALUE_IMAGE, null,
null);
// eventsPropertyDescriptor., value)), i);
// System.out.println(eventsPropertyDescriptor.getId(object));

itemPropertyDescriptors.add(eventsPropertyDescriptor);
}
}
[/Java]

object ist eine Liste mit Strings; ich will Pro string 1 Property erstellen, da die Liste nur zur darstellung der Eigenschaften dient! Dies funktioniert nicht und ich bekomm nur 1 Property"line" mit dem Format | Value: | "WERT,WERT,..." |
object ist eine Liste mit Strings
Danke,
 
Zuletzt bearbeitet:
Veilleicht hilft dir das hier weiter:

Take control of your properties

kannst du mir sagen, wie du einen neuen Tab hingekommen hast? ich Muss für mein Modell eine Propertie erstellen, welche fast genaus funktioniert der "Annotation" - Tap im ecorediag - Editor. (Gef-Repräsentation des Ecore Models)

Gruß, Rainer
 
Zuletzt bearbeitet:
Hab leider wenig Zeit

schau dir mal die Klasse

org.eclipse.emf.ecoretools.properties.internal.sections.EAnnotationPropertySection an. Nicht erschrecken. Das meiste ist wirklich SWT/JFace zeugs. Interessant sind vorallem die EditingSupport "Klassen" (sind annonyme innere Klassen). Hier siehst du, wie du selber Instanzen deines zugrundeliegenden EMF- Models anlegst, änderst oder löschst. Ziemlich cool das ganze!

Java:
getEditingDomain().getCommandStack().execute(new EMFRecordingChangeCommand(getEObject().eResource()) {

					@Override
					protected void doExecute() {
						currentEAnnotation.getDetails().put(text, entry.getValue().toString());
						currentEAnnotation.getDetails().remove(entry);
					}
				});
gibt im Zusammenhang mehr Sinn;-) aber die Klasse ist 500 Zeilen lang; passt hier nicht rein ;-)

Dazu außschließlich den XML Teil der Docu
The Eclipse Tabbed Properties View

Und als Classe in deiner Section gibts du deine eigene Eplementierung von
AbstractTabbedPropertySection.java an.

Filter wie bei EAnnotationPropertySection (sehr einfach)

Viel Erfolg.


PS: Ich empfehle dir sehr, die Implementierung in ein eigenes Plugin zu schreiben. (z.b. xxx.costum). Damit all deine Errungenschaften beim übergenerieren des diagram-Plugins nicht verloren gehen. Das mit dem generate NOT ist totaler schwachsinn.
Hierzu musst du einfach in der costum-plugin.xml zwei die beiden Extensionpoints
extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs
und
extension point="org.eclipse.ui.views.properties.tabbed.propertySections
"ausfüllen"

als contributorId="mview.views.SampleView" unbedingt die contributerId eintragen, die in deiner XXX.diagram plugin.xml unter dem Extensionpoint

extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor
eingetragen ist!

die plugin.xml aus dem package org.eclipse.emf.ecoretools.properties könnte auch hilfreich sein.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben