Eclipse Plug-in: wie refreshe ich eine combobox?

Gecko1

Mitglied
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:

Java:
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
 
Zuletzt bearbeitet:
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:

Java:
Combo Combobox;
Java:
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:
Java:
Drop_down_menu1 refresh = new Drop_down_menu1();
		refresh.fillCombo();
 
Zuletzt bearbeitet:
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
 
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:

Java:
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();
  }
}
 

Zurück
Oben