2024-10-07 00:58:29 +03:00
|
|
|
|
package Common.Visual;
|
|
|
|
|
|
import Common.Database.Tables.DataSet;
|
2024-10-08 22:33:49 +03:00
|
|
|
|
import Common.Utils.CommonUtils;
|
2024-10-09 20:35:18 +03:00
|
|
|
|
import Common.Visual.Menus.DataMenuBar;
|
2024-10-08 22:33:49 +03:00
|
|
|
|
import Common.Visual.Themes.DefaultTheme;
|
|
|
|
|
|
import Common.Visual.Themes.VisualiserTheme;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
|
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.*;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
import java.util.LinkedHashMap;
|
2024-10-07 17:46:38 +03:00
|
|
|
|
import java.util.Stack;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
public class CommonUI {
|
2024-10-09 22:51:52 +03:00
|
|
|
|
public static boolean active=false; //есть ли интерфейс. в консольных версиях не нужен.
|
2024-10-09 22:01:19 +03:00
|
|
|
|
public static MenuElement[] last_menu_path; //для меню
|
2024-10-08 22:33:49 +03:00
|
|
|
|
public static boolean isActive() {
|
|
|
|
|
|
return active;
|
|
|
|
|
|
}
|
|
|
|
|
|
//---
|
2024-10-07 00:58:29 +03:00
|
|
|
|
public static LinkedHashMap<Class<? extends DataSet>, DataMenuBar> menuBars = new LinkedHashMap<>();
|
2024-10-07 17:46:38 +03:00
|
|
|
|
public static Stack<Component> windowsStack = new Stack<>();
|
2024-10-08 22:33:49 +03:00
|
|
|
|
static VisualiserTheme theme = new DefaultTheme();
|
|
|
|
|
|
public static VisualiserTheme getTheme() {
|
|
|
|
|
|
return theme;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void setTheme(VisualiserTheme theme_in){
|
|
|
|
|
|
theme= theme_in;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static Component getFrontWindow() {
|
|
|
|
|
|
Component res = null;
|
|
|
|
|
|
try {
|
|
|
|
|
|
res = windowsStack.peek();
|
|
|
|
|
|
} catch (Exception ignored){
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
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) {
|
|
|
|
|
|
return !CommonUI.isActive() || (JOptionPane.showConfirmDialog(parent,
|
|
|
|
|
|
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) {
|
|
|
|
|
|
CommonUtils.CopyToClipboard(message);
|
|
|
|
|
|
if (CommonUI.isActive())
|
|
|
|
|
|
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void Error(String message) {
|
|
|
|
|
|
CommonUtils.CopyToClipboard(message);
|
|
|
|
|
|
if (CommonUI.isActive())
|
|
|
|
|
|
JOptionPane.showMessageDialog(getFrontWindow(), message, "", 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static boolean Warning(String text) {
|
|
|
|
|
|
return !CommonUI.isActive() ||
|
|
|
|
|
|
JOptionPane.showConfirmDialog(getFrontWindow(),
|
|
|
|
|
|
text + "\nВы уверены?",
|
|
|
|
|
|
"Подтверждение",
|
|
|
|
|
|
JOptionPane.YES_NO_OPTION,
|
|
|
|
|
|
JOptionPane.WARNING_MESSAGE) == 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
//--
|
2024-10-07 00:58:29 +03:00
|
|
|
|
}
|