# Eclipse Plug-in: wie refreshe ich eine combobox?



## Gecko1 (25. Aug 2011)

hey,
Ich arbeite momentan an einem Eclipse Plugin welches aus einer XML Datei Daten auslesen soll und diese danach in verschiedenen Combo Boxen Anzeigt.

Mein Problem ist nun dass, sobald der Benutzer die XML Input Datei ändert um eine neue zu wählen die Combo Boxen nicht refreshed werden da sie ja nur beim starten von Eclipse aufgerufen werden und danach nicht mehr refreshed werden.;(

Hier mal eine der Combo Boxen:


```
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import org.jdom.JDOMException;
import anewtest.actions.OpenFile;

public class Drop_down_menu1 extends WorkbenchWindowControlContribution
{

  public Drop_down_menu1()
  {
  }

int Index;
static String ToolTipText = "Application Drop Down Menu";
static int temp=0;


  @Override
  protected Control createControl(Composite parent)
  {

	  OpenFile open = new OpenFile();
	  Open Ppfad = new Open();
	  global.DerPfad = Ppfad.GetPfad();

		try {
			int temp = open.GetDDM1Laenge();
			open.Eintraege = open.GetDDM1(temp);
			open.laenge = open.GetDDM1Laenge();

		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	Combo combo = new Combo(parent, SWT.READ_ONLY);
    combo.setItems (open.Eintraege);
    combo.setText (open.Eintraege[0]);
    combo.setVisibleItemCount(open.laenge);
    combo.setToolTipText(ToolTipText);

    temp = combo.getSelectionIndex();

    return combo;
  }


  public int GetIndexOfSelection()
  {
	return temp;
  }
}
```

es gibt zwar Funktionen wie  combo.redraw() allerdings hab ich momentan keinen Plan wie ich "createControl" erneut aufrufen soll da ich nicht recht verstehe was es mit dem "Composite parent" auf sich hat. ;(

würde mich über die ein oder andere Hilfe freuen,
Gecko


----------



## Sonecc (25. Aug 2011)

Combo box als Feld der Klasse definieren und eine Methode schreiben, welche die Combo box füllt


----------



## Gecko1 (25. Aug 2011)

hey, danke für die schnelle Antwort

habe jetzt die Eigenschaft "Combo Combobox" hinzugefügt und auch die Methode 
erstellt mit der ich Combobox mit den neuen Daten befülle.

Doch meine ComboBox wird noch immer nicht refreshed 

Hier was ich verändert habe:


```
Combo Combobox;
```


```
public Control fillCombo()
  {
	  OpenFile open = new OpenFile();
	  Open Ppfad = new Open();
	  global.DerPfad = Ppfad.GetPfad();

		try {
			int temp = open.GetDDM1Laenge();
			open.Eintraege = open.GetDDM1(temp);
			open.laenge = open.GetDDM1Laenge();

		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		Combobox.setItems (open.Eintraege);
		Combobox.setVisibleItemCount(open.laenge);
		return Combobox;
  }
```

Hier noch wie ich die neue Methode aufrufe:

```
Drop_down_menu1 refresh = new Drop_down_menu1();
		refresh.fillCombo();
```


----------



## Sonecc (25. Aug 2011)

Erstmal solltest du dir Naming Conventions angewöhnen. Einfach mal nach googlen. 

Zu dem Problem:
Eigentlich sollte es auf diese weise gehen (wobei ich persönlich die Methode setItems nie verwende)
Kanns aber auch so ohne Zeit und Resourcen nicht genau nachprüfen


----------



## Gecko1 (26. Aug 2011)

ok habs jetzt geschaft.
mit einem globalen Combo funktioniert es jetzt. Ist zwar etwas unschön aber fürs erste reicht es mir 

Hier der Code fals jemand das selbe Problem hat:


```
package anewtest.actions;

import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import org.jdom.JDOMException;
import anewtest.actions.OpenFile;

public class Drop_down_menu1 extends WorkbenchWindowControlContribution
{

  public Drop_down_menu1()
  {
  }

int Index;
static String ToolTipText = "Application Drop Down Menu";
static int temp1=0;

  @Override
  protected Control createControl(Composite parent)
  {
	 
	global.globalbox = new Combo(parent, SWT.READ_ONLY);
	fillCombo();
   
        return global.globalbox;
  }

  // refresh
  public void fillCombo()
  {
	  OpenFile open = new OpenFile();
	  Open Ppfad = new Open();
	  global.DerPfad = Ppfad.GetPfad();

		try {
			int temp = open.GetDDM1Laenge();
			open.Eintraege = open.GetDDM1(temp);
			open.laenge = open.GetDDM1Laenge();

		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		global.globalbox.setItems (open.Eintraege);
		global.globalbox.setVisibleItemCount(open.laenge);
		global.globalbox.setText (open.Eintraege[0]);

  }
  public int GetIndexOfSelection()
  {

	return global.globalbox.getSelectionIndex();
  }
}
```


----------

