Files
VisualSapfor/src/Common_old/UI/Windows/Form.java
2024-10-07 14:44:24 +03:00

99 lines
2.9 KiB
Java

package Common_old.UI.Windows;
import _VisualDVM.Global;
import _VisualDVM.Syntax.ThemeElement;
import GlobalData.FormsParams.DBForm;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
public abstract class Form extends JFrame implements ThemeElement {
private DBForm info = null;
public Form() {
if (getIconName().length() > 0) setIconImage(new ImageIcon(Form.class.getResource(getIconName())).getImage());
SetListener();
this.setTitle(Global.isWindows ? getWTitleText() : getUTitleText());
pack();
setMinimumSize(new Dimension(getDefaultWidth(), getDefaultHeight()));
}
abstract protected JPanel getMainPanel();
public String getIconName() {
return "";
}
public String getWTitleText() {
return "";
}
public String getUTitleText() {
return "";
}
protected FormType getFormType() {
return FormType.Undefined;
}
protected void SetListener() {
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
Close();
}
});
}
public int getDefaultWidth() {
return 800;
}
public int getDefaultHeight() {
return 450;
}
/*
*вызывать после перегрузки, чтобы отобразить окно.
*/
public Component getRelative() {
return null;
}
public void Show() {
try {
LoadWindowParameters();
} catch (Exception e) {
Global.Log.PrintException(e);
}
setContentPane(getMainPanel());
setVisible(true);
}
public void Close() {
try {
SaveWindowParameters();
} catch (Exception e) {
Global.Log.PrintException(e);
}
setVisible(false);
dispose();
AfterClose();
}
public void AfterClose() {
}
public void LoadWindowParameters() throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException {
if (!getFormType().equals(FormType.Undefined))
if (Global.db.forms.Data.containsKey(getFormType())) {
info = Global.db.forms.Data.get(getFormType());
info.Apply(this);
return;
}
setSize(getDefaultWidth(), getDefaultHeight());
setLocationRelativeTo(getRelative());
}
public void SaveWindowParameters() throws Exception {
if (!getFormType().equals(FormType.Undefined)) {
if (info != null) {
info.Init(this);
Global.db.Update(info);
} else
Global.db.Insert(new DBForm(getFormType(), this));
}
}
@Override
public void applyTheme() {
//todo -> применение темы.
}
}