Files
VisualSapfor/src/Common/Visual/UI_.java

92 lines
3.3 KiB
Java
Raw Normal View History

package Common.Visual;
2024-10-11 00:00:30 +03:00
import Common.Utils.Utils_;
2024-10-07 17:46:38 +03:00
import javax.swing.*;
2024-10-08 22:33:49 +03:00
import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultFormatter;
2024-10-07 17:46:38 +03:00
import java.awt.*;
import java.util.Stack;
2024-10-11 00:00:30 +03:00
public class UI_ {
2024-10-14 15:19:13 +03:00
public static boolean active = false; //есть ли интерфейс. в консольных версиях не нужен.
2024-10-08 22:33:49 +03:00
//---
2024-10-07 17:46:38 +03:00
public static Stack<Component> windowsStack = new Stack<>();
2024-10-14 15:19:13 +03:00
public static boolean isActive() {
return active;
}
2024-10-08 22:33:49 +03:00
public static Component getFrontWindow() {
Component res = null;
try {
res = windowsStack.peek();
2024-10-14 15:19:13 +03:00
} catch (Exception ignored) {
2024-10-08 22:33:49 +03:00
}
return res;
}
2024-10-07 17:46:38 +03:00
//-----
public static void Clear(Container container) {
container.removeAll();
container.repaint();
container.revalidate();
}
// http://java-online.ru/swing-joptionpane.xhtml
public static <T> void TrySelect(JComboBox box, T value_in) {
if (value_in != null) {
for (int i = 0; i < box.getItemCount(); ++i) {
T value = (T) box.getItemAt(i);
if (value.equals(value_in)) {
box.setSelectedIndex(i);
return;
}
}
box.addItem(value_in);
box.setSelectedIndex(box.getItemCount() - 1);
}
}
public static void TrySelect_s(JComboBox box, String value_string_in) {
for (int i = 0; i < box.getItemCount(); ++i) {
Object value = box.getItemAt(i);
if (value.toString().equals(value_string_in)) {
box.setSelectedIndex(i);
return;
}
}
}
2024-10-08 22:33:49 +03:00
public static void MakeSpinnerRapid(JSpinner spinner, ChangeListener listener) {
JComponent comp = spinner.getEditor();
JFormattedTextField field = (JFormattedTextField) comp.getComponent(0);
DefaultFormatter formatter = (DefaultFormatter) field.getFormatter();
formatter.setCommitsOnValidEdit(true);
formatter.setAllowsInvalid(true);
spinner.addChangeListener(listener);
}
//Примитивные диалоговые элементы
public static boolean Question(Component parent, String text) {
2024-10-11 00:00:30 +03:00
return !UI_.isActive() || (JOptionPane.showConfirmDialog(parent,
2024-10-08 22:33:49 +03:00
text + "?",
"Подтверждение",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == 0);
}
public static boolean Question(String text) {
return Question(getFrontWindow(), text);
}
public static void Info(String message) {
2024-10-11 00:00:30 +03:00
Utils_.CopyToClipboard(message);
if (UI_.isActive())
2024-10-08 22:33:49 +03:00
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 1);
}
public static void Error(String message) {
2024-10-11 00:00:30 +03:00
Utils_.CopyToClipboard(message);
if (UI_.isActive())
2024-10-08 22:33:49 +03:00
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 0);
}
public static boolean Warning(String text) {
2024-10-11 00:00:30 +03:00
return !UI_.isActive() ||
2024-10-08 22:33:49 +03:00
JOptionPane.showConfirmDialog(getFrontWindow(),
text + "\nВы уверены?",
"Подтверждение",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == 0;
}
//--
}