Skip to content

Commit

Permalink
Verbesserung ProjektAuswahlDialog (#108)
Browse files Browse the repository at this point in the history
* Verbesserung ProjektAuswahlDialog

Update Button Text "weiter" zu "übernehmen". Weiter suggeriert das noch was folgt. Übernehmen wie bei anderen Dialogen.
Korrektur falsche ä
Icons für die Buttons
Korrektes Handling von Abbruch über Button, Icon und ESC ohne Meldung

* replace Boolean with boolean

* Weiter Verbesserung

Habe den Kommentar bezüglich der catch Implementierung aus Request #104 implementiert.
Analog zu Buchungsart Zuordnung kann man einstellen ob überschrieben werden soll.
Analog zu Mitgliedskonto Zuordnung kann das Projekt auch gelöscht werden

* remove obsolete import java.rmi.RemoteException

* Bessere Dialoghöhe 175
  • Loading branch information
JohannMaierhofer authored Jan 21, 2024
1 parent 83adb78 commit fc0006a
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@

package de.jost_net.JVerein.gui.action;

import java.rmi.RemoteException;

import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.gui.dialogs.ProjektAuswahlDialog;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Projekt;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.gui.dialogs.AbstractDialog;
import de.willuhn.jameica.system.OperationCanceledException;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;

Expand Down Expand Up @@ -65,39 +64,66 @@ public void handleAction(Object context) throws ApplicationException
{
return;
}
try
{
ProjektAuswahlDialog pad = new ProjektAuswahlDialog(
AbstractDialog.POSITION_CENTER, b);
Projekt open = pad.open();

ProjektAuswahlDialog pad = new ProjektAuswahlDialog(
AbstractDialog.POSITION_CENTER, b);
Projekt open = pad.open();

if (!pad.getAbort())
{
int counter = 0;
if (open == null)
{
GUI.getStatusBar().setErrorText("Kein Projekt ausgewählt");
return;
for (Buchung buchung : b)
{
buchung.setProjekt(null);
buchung.store();
}
}

for (Buchung buchung : b)
else
{
buchung.setProjekt(open);
buchung.store();
for (Buchung buchung : b)
{
boolean protect = buchung.getProjekt() != null
&& !pad.getOverride();
if (protect)
{
counter++;
}
else
{
buchung.setProjekt(open);
buchung.store();
}
}
}
control.getBuchungsList();
GUI.getStatusBar().setSuccessText("Projekt zugeordnet");
}
catch (Exception e)
{
Logger.error("Fehler", e);
GUI.getStatusBar().setErrorText(
"Fehler bei der Zuordnung des Projektes");
return;
String protecttext = "";
if (open == null)
{
GUI.getStatusBar().setSuccessText("Projekte gelöscht");
}
else
{
if (counter > 0)
{
protecttext = String
.format(", %d Projekte wurden nicht überschrieben. ", counter);
}
GUI.getStatusBar()
.setSuccessText("Projekte zugeordnet" + protecttext);
}
}
}
catch (RemoteException e)
catch (OperationCanceledException oce)
{
throw oce;
}
catch (Exception e)
{
String fehler = "Fehler beim Speichern.";
GUI.getStatusBar().setErrorText(fehler);
Logger.error(fehler, e);
Logger.error("Fehler", e);
GUI.getStatusBar().setErrorText(
"Fehler bei der Zuordnung des Projektes");
}
}
}
94 changes: 81 additions & 13 deletions src/de/jost_net/JVerein/gui/dialogs/ProjektAuswahlDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import java.rmi.RemoteException;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
Expand All @@ -29,10 +30,12 @@
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.dialogs.AbstractDialog;
import de.willuhn.jameica.gui.input.CheckboxInput;
import de.willuhn.jameica.gui.input.LabelInput;
import de.willuhn.jameica.gui.input.SelectInput;
import de.willuhn.jameica.gui.parts.ButtonArea;
import de.willuhn.jameica.gui.util.Color;
import de.willuhn.jameica.gui.util.LabelGroup;
import de.willuhn.jameica.system.OperationCanceledException;

/**
* Ein Dialog, ueber den man ein Projekt auswählen kann.
Expand All @@ -43,6 +46,14 @@ public class ProjektAuswahlDialog extends AbstractDialog<Projekt>
private Projekt selected = null;

private SelectInput projekte = null;

private CheckboxInput ueberschreiben = null;

private LabelInput status = null;

private boolean abort = false;

private boolean ueberschr;

Buchung[] buchungen = null;

Expand All @@ -51,43 +62,79 @@ public ProjektAuswahlDialog(int position, Buchung[] buchungen)
super(position);
this.buchungen = buchungen;

setTitle("Projekt auswâ€hlen");
setSize(450, 150);
setTitle("Projekt auswählen");
setSize(400, 175);
}

@Override
protected void paint(Composite parent) throws Exception
{
LabelGroup options = new LabelGroup(parent, "Projekte");
options.addInput(this.getProjekte());
ButtonArea b = new ButtonArea();
b.addButton("weiter", new Action()
LabelGroup group = new LabelGroup(parent, "");
group.addLabelPair("Projekt", this.getProjekte());
group.addLabelPair("Projekte überschreiben", getUeberschreiben());
group.addLabelPair("", getStatus());

ButtonArea buttons = new ButtonArea();
buttons.addButton("übernehmen", new Action()
{

@Override
public void handleAction(Object context)
{
if (projekte.getValue() == null)
{
status.setValue("Bitte auswählen");
status.setColor(Color.ERROR);
return;
}
selected = (Projekt) projekte.getValue();
ueberschr = (boolean) getUeberschreiben().getValue();
close();
}
});
b.addButton("abbrechen", new Action()
}, null, false, "check.png");
buttons.addButton("entfernen", new Action()
{
@Override
public void handleAction(Object context)
{
selected = null;
close();
}
}, null, false, "undo.png");
buttons.addButton("abbrechen", new Action()
{

@Override
public void handleAction(Object context)
{
throw new OperationCanceledException();
abort = true;
close();
}
}, null, false, "stop-circle.png");
getShell().addListener(SWT.Close,new Listener()
{
public void handleEvent(Event event)
{
abort = true;
}
});
b.paint(parent);
buttons.paint(parent);
}

@Override
protected Projekt getData() throws Exception
{
return this.selected;
}

public boolean getAbort()
{
return abort;
}

public boolean getOverride()
{
return ueberschr;
}

private SelectInput getProjekte() throws RemoteException
{
Expand All @@ -114,7 +161,8 @@ private SelectInput getProjekte() throws RemoteException

pj.setOrder("ORDER BY bezeichnung");
this.projekte = new SelectInput(pj, null);
this.projekte.setName("Projekt");
this.projekte.setValue(null);
this.projekte.setPleaseChoose("Bitte Projekt auswählen");
this.projekte.addListener(new Listener()
{

Expand All @@ -126,4 +174,24 @@ public void handleEvent(Event event)
});
return this.projekte;
}

private LabelInput getStatus()
{
if (status != null)
{
return status;
}
status = new LabelInput("");
return status;
}

private CheckboxInput getUeberschreiben()
{
if (ueberschreiben != null)
{
return ueberschreiben;
}
ueberschreiben = new CheckboxInput(false);
return ueberschreiben;
}
}

0 comments on commit fc0006a

Please sign in to comment.