63 lines
2.2 KiB
Java
63 lines
2.2 KiB
Java
package io.gitlab.jfronny.inceptum.gtk.window.edit;
|
|
|
|
import io.gitlab.jfronny.commons.StringFormatter;
|
|
import io.gitlab.jfronny.inceptum.gtk.GtkEnvBackend;
|
|
import io.gitlab.jfronny.inceptum.gtk.control.ILabel;
|
|
import io.gitlab.jfronny.inceptum.gtk.control.IRow;
|
|
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
|
import io.gitlab.jfronny.inceptum.gtk.window.InstanceSettingsWindow;
|
|
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
|
|
import org.gtk.gtk.*;
|
|
import org.jetbrains.annotations.Nullable;
|
|
import org.jetbrains.annotations.PropertyKey;
|
|
|
|
public class SettingsTab extends Box {
|
|
protected final Instance instance;
|
|
protected final InstanceSettingsWindow window;
|
|
|
|
public SettingsTab(Instance instance, InstanceSettingsWindow window) {
|
|
super(Orientation.VERTICAL, 8);
|
|
this.instance = instance;
|
|
this.marginHorizontal = 24;
|
|
this.marginTop = 12;
|
|
this.window = window;
|
|
}
|
|
|
|
protected void section(@Nullable @PropertyKey(resourceBundle = I18n.BUNDLE) String title, SectionBuilder builder) {
|
|
if (title != null) append(new ILabel(title, ILabel.Mode.HEADING));
|
|
Frame frame = new Frame(null);
|
|
ListBox listBox = new ListBox();
|
|
listBox.selectionMode = SelectionMode.NONE;
|
|
frame.child = listBox;
|
|
builder.build(new SectionBuilder.Section() {
|
|
@Override
|
|
public IRow row(String title, @Nullable String subtitle, Object... args) {
|
|
IRow row = new IRow(title, subtitle, args);
|
|
listBox.append(row);
|
|
return row;
|
|
}
|
|
});
|
|
append(frame);
|
|
}
|
|
|
|
protected interface SectionBuilder {
|
|
void build(Section section);
|
|
|
|
interface Section {
|
|
IRow row(@PropertyKey(resourceBundle = I18n.BUNDLE) String title, @PropertyKey(resourceBundle = I18n.BUNDLE) @Nullable String subtitle, Object... args);
|
|
}
|
|
}
|
|
|
|
protected void showError(String message, Throwable t) {
|
|
GtkEnvBackend.simpleDialog(
|
|
window,
|
|
StringFormatter.toString(t),
|
|
message,
|
|
MessageType.ERROR,
|
|
ButtonsType.CLOSE,
|
|
null,
|
|
null
|
|
);
|
|
}
|
|
}
|