Eclispe RCP - Preferences ohne "DefaultPages"

Status
Nicht offen für weitere Antworten.

Saxony

Top Contributor
Hiho,

ich verwende in meiner Anwendung auch den Eclipse eigenen Preferences-Dialog. Diesen habe ich einem Menüpunkt zugeordnet und er wird auch ordnungsgemäß angezeigt. Leider hat dieser einen kleinen Schönheitsfehler - es befinden sich bereits PreferencePages da drin. Dies sind General und Install/Update.

Im Netz habe ich folgenden Tipp gefunden:

Java:
@Override

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

//....
	@Override
	public void postWindowOpen() {

		PreferenceManager preferenceManager = PlatformUI.getWorkbench()
				.getPreferenceManager();
		preferenceManager.remove("org.eclipse.ui.preferencePages.Workbench");
	}
}

Ist dies die richtige Vorgehensweise um die Preferences zu säubern? Ich möchte im Endeffekt nur meine eigenen Pages da drin haben. Ausserderm entfernt oben genanntes nicht die Page für Install/Update...

vielen Dank
bye Saxony
 

stefan.

Mitglied
Hast du die Preferences über das Template erzeugt? Wenn ja wurden ein paar neue Klassen erstellt, die du leicht bearbeiten kannst.
 

Saxony

Top Contributor
Ja das Erstellen von eigenen PreferencePages ist auch kein Problem. Aber in dem zugehörigen PreferenceDialog stehen aber nicht nur meine Pages drinn sondern eben auch noch General und Install/Update - also Seiten, welche zu Eclipse dazu gehören. Diese will ich aber nicht haben! ;)

bye Saxony
 

Koringar

Bekanntes Mitglied
Hi,

ich bin jetzt mal so frech zu behaupten, das dies ein Bug ist. Habe ich bei mir auch manchmal, wenn ich das PlugIn oder RCP über Eclipse starte, ist aber wie gesagt nicht immer da (nur manchmal). Wenn du dann aber dein PlugIn auslieferst müssten diese dann nicht mehr drin sein, zumindest ist es bei mir so.
 

Saxony

Top Contributor
Hiho,

diese Seiten befinden sich auch nach einem Deploy noch im PreferenceDialog...also doch schon sehr nervig.

bye Saxony
 

Saxony

Top Contributor
Hiho,

falls es mal noch jemand wissen will:

Java:
PreferenceManager preferenceManager = PlatformUI.getWorkbench().getPreferenceManager();
				
List preferenceNodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER);


for (Iterator it = preferenceNodes.iterator(); it.hasNext();) {

	IPreferenceNode preferenceNode = (IPreferenceNode) it.next();
		   
	System.out.println(preferenceNode.getId());
}

Damit erhält man alle aktuell verfügbaren PreferencePages.

Java:
// entfernt General Page
preferenceManager.remove("org.eclipse.ui.preferencePages.Workbench");		
// Entfernt Install/Update Page
preferenceManager.remove("org.eclipse.update.internal.ui.preferences.MainPreferencePage");

bye Saxony
 

Saxony

Top Contributor
Hiho,

leider scheint dies aber nicht mit eigenen Pages zu klappen:

Java:
preferenceManager.remove("myproject.MySettingsPage");

Wenn ich durch alle PreferenceNodes iteriere zeigt es mir meine Pages zwar mit an, aber ein remove bewirkt nichts.
Auch dann nicht, wenn ich remove direkt mit remove(IPreferenceNode) aufrufe anstatt mit String.

bye Saxony
 
G

Gonzo17

Gast
Also wenn du es etwas einfacher machen willst, dann kannst du das über die Extension "org.eclipse.ui.activities" regeln. Per Plug-In Spy einfach die ID der PreferencePage anschauen und kopieren und dann entsprechend deaktivieren.
 

Koringar

Bekanntes Mitglied
Das mit den Activities funktioniert super. Mann kann bestimmte Punkte von PlugIns unterdrücken oder auch das komplette Plugin.

Code:
<extension
         point="org.eclipse.ui.activities">
      <activity
            id="de.elena.zss.gui.activities.deactivate"
            name="Deactivate Elemente">
      </activity>
      <activityPatternBinding
            activityId="de.elena.zss.gui.activities.deactivate"
            pattern="[B]org.eclipse.*[/B]">
      </activityPatternBinding>
   </extension>

Mit dem Pattern definierst du was du nicht haben willst, dadurch dass das Activity kein 'EnableWhen' hat wird es unterdrückt und nicht angezeigt.
 

Saxony

Top Contributor
Hiho,

der Vollständigkeit halber - Wie kann man nun eigentlich eigene Seiten noch ausblenden?

Ich habe hier den Fall, dass wenn sich Nutzer B anmeldet sollen PreferencePages, die Nutzer A sonst sieht ausgeblendet werden.

Zur Zeit versuche ich es über PreferenceManager#remove innerhalb ApplicationWorkbenchWindowAdviser#postWindowOpen - das scheint aber nicht zu klappen (s.o.).

bye Saxony
 

Koringar

Bekanntes Mitglied
Im Grunde genau so, du musst bei Pattern blos dann eben die ID der Page angeben.

Wenn du jedoch in einer Anwendung zwischen zwei Benutzern unterscheiden willst, dann musste die Activitie etwas erweitern. Und zwar um den 'EnableWhen' Zweig, der das dann alles Prüft. Dazu gibt es schon viele Beispiele, die ach hier und da mal gepostet wurden.

Hier der Link: z.B.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben