package gminers.glasspane.prebaked;
import gminers.glasspane.GlassPane;
import gminers.glasspane.component.button.PaneButton;
import gminers.glasspane.component.text.PaneLabel;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
/**
* Implements a confirmation dialog. Designed for use with {@link GlassPane#modalOverlay()}, but works with {@link GlassPane#show()} as
* well.
*
* @author Aesen Vismea
*
*/
@FieldDefaults(level = AccessLevel.PROTECTED)
@ToString
@Getter
@Setter
public class PaneYesNo
extends GlassPane {
public interface YesNoCallback {
void onYes(final PaneYesNo pane);
void onNo(final PaneYesNo pane);
}
String text;
String yesText;
String noText;
YesNoCallback callback;
PaneButton yesButton;
PaneButton noButton;
public PaneYesNo(final String text, final String yesText, final String noText, final YesNoCallback callback) {
setRevertAllowed(true);
this.text = text;
this.yesText = yesText;
this.noText = noText;
this.callback = callback;
add(PaneLabel.createTitleLabel(text));
yesButton = new PaneButton(yesText);
noButton = new PaneButton(noText);
yesButton.registerActivationListener(new Runnable() {
@Override
public void run() {
if (callback != null) {
callback.onYes(PaneYesNo.this);
}
revert();
}
});
noButton.registerActivationListener(new Runnable() {
@Override
public void run() {
if (callback != null) {
callback.onNo(PaneYesNo.this);
}
revert();
}
});
yesButton.setWidth(100);
yesButton.setAutoPosition(true);
yesButton.setRelativeX(0.5);
yesButton.setRelativeY(1.0);
yesButton.setRelativeXOffset(-105);
yesButton.setRelativeYOffset(-25);
noButton.setWidth(100);
noButton.setAutoPosition(true);
noButton.setRelativeX(0.5);
noButton.setRelativeY(1.0);
noButton.setRelativeXOffset(5);
noButton.setRelativeYOffset(-25);
add(yesButton, noButton);
}
}