Eclipse blijft ons hoofdbrekens geven. Zoals bekend in vorige topics, bouwen we een Eclipse RCP programma. Deze is in staat om meerdere SVG plaatjes te laten zien in verschillende views van hetzelfde type (zelfde primary wiew id).
Het idee erachter is dat gebruikers, vanuit een preview SVG, plaatjes kunnen selecteren die ze willen. Elk geselecteerd plaatje wordt vervolgens in een verschillende view gezet, en alle views zijn initieel van dezelfde grootte.
Vantevoren weet de RCP applicatie niet hoeveel plaatjes er moeten worden geladen en waar deze deze te plaatsen. Om dit probleem van variabele nr of views te overbruggen initialiseer ik zogenaamde placeholders in de perspective. Elke placeholder is gekoppeld met een view. Tijdens runtime worden sommige views zichtbaar gemaakt, en sommige niet.
Het probleem nu is dat de positie (layout) van de placeholders tijdens runtime niet goed kunnen controleren. Er is alleen een createInitialLayout method die te vroeg (tijdens het laden van de applicatie) zijn werk doet.
Hier een stuk van de code voor de perspective waar de plaatjes zichtbaar worden gemaakt.
NB Er is een methode die de nr of views veranderd, deze variabele kan worden veranderd @ runtime maar we hebben nog geen manier gevonden om de layout ook te veranderen.
Weet iemand een manier om de layout van de placeholders te controleren, nadat ik de createInitialLayout methode heb aangeroepen?
Het idee erachter is dat gebruikers, vanuit een preview SVG, plaatjes kunnen selecteren die ze willen. Elk geselecteerd plaatje wordt vervolgens in een verschillende view gezet, en alle views zijn initieel van dezelfde grootte.
Vantevoren weet de RCP applicatie niet hoeveel plaatjes er moeten worden geladen en waar deze deze te plaatsen. Om dit probleem van variabele nr of views te overbruggen initialiseer ik zogenaamde placeholders in de perspective. Elke placeholder is gekoppeld met een view. Tijdens runtime worden sommige views zichtbaar gemaakt, en sommige niet.
Het probleem nu is dat de positie (layout) van de placeholders tijdens runtime niet goed kunnen controleren. Er is alleen een createInitialLayout method die te vroeg (tijdens het laden van de applicatie) zijn werk doet.
Hier een stuk van de code voor de perspective waar de plaatjes zichtbaar worden gemaakt.
NB Er is een methode die de nr of views veranderd, deze variabele kan worden veranderd @ runtime maar we hebben nog geen manier gevonden om de layout ook te veranderen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| public class FivaePerspectiveOutput implements IPerspectiveFactory
{
public static final String ID_PERSPECTIVE = "app.ApplPerspectiveOutput";
private static int nrViews = 0;
private final int TEMPCOLL = 4;
private final int TEMPROW = 6;
public static void setNrViews(int nr)
{
nrViews = nr;
}
public void createInitialLayout(IPageLayout layout)
{
String altViewIDRow = IPageLayout.ID_EDITOR_AREA;
String altViewIDCollumn = IPageLayout.ID_EDITOR_AREA;
String altViewIDOld;
layout.setEditorAreaVisible(false);
for (int i = 0; i < TEMPROW; i++)
{
altViewIDOld = altViewIDRow;
altViewIDRow = HeatMapView.ID_VIEW + ':' + HeatMapView.ID_VIEW + (new
Integer(i * TEMPCOLL)).toString();
layout.addPlaceholder(altViewIDRow,
IPageLayout.TOP,
((float) 1/(TEMPROW - i)), // * (i + 1),
IPageLayout.ID_EDITOR_AREA);
System.out.println("perspR: " + altViewIDRow);
altViewIDCollumn = altViewIDRow;
for (int j = 1; j < TEMPCOLL; j++)
{
altViewIDOld = altViewIDCollumn;
altViewIDCollumn = HeatMapView.ID_VIEW + ':' + HeatMapView.ID_VIEW + (new
Integer(i * TEMPCOLL + j)).toString();
layout.addPlaceholder(altViewIDCollumn,
IPageLayout.RIGHT,
((float) 1/(TEMPROW - j - 1)),
altViewIDOld);
System.out.println("perspC: " + altViewIDCollumn + " " + (TEMPCOLL - j));
}
} |
Weet iemand een manier om de layout van de placeholders te controleren, nadat ik de createInitialLayout methode heb aangeroepen?