Class Main
- All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants
Main application window for the 3D Print Job Tracker GUI.
This JFrame implementation is responsible for application startup tasks such
as database initialization, integrity checks, scheduling backups and
composing the primary UI (menu, main panel). The class is implemented as a
singleton and is safe to obtain from other UI components via
getInstance().
- Since:
- 1.0.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class JFrame
JFrame.AccessibleJFrameNested classes/interfaces inherited from class Frame
Frame.AccessibleAWTFrameNested classes/interfaces inherited from class Window
Window.AccessibleAWTWindow, Window.TypeNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static MainSingleton instance of the main application window.private static final Map<String, Class<? extends LookAndFeel>> Map of available IntelliJ themes for FlatLaf look and feel.private ProjectFormPanelMain project form panel displayed in the center of the window.Fields inherited from class JFrame
accessibleContext, rootPane, rootPaneCheckingEnabledFields inherited from class Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSORFields inherited from class Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE -
Constructor Summary
ConstructorsConstructorDescriptionMain()Constructs the main application window, initializes database, menu bar, and content. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidSets up the main content area, including welcome label and project form panel.private voidCreates the menu bar with File, Project, and Theme menus.private voidEnsure a consistent large font is applied across common UI components.private voidExit the application immediately.static MainReturn the singleton `Main` instance, creating it if necessary.private voidInitializes the database tables if they do not exist.voidloadProjectDetails(String name, String type, String description, String filePath) Loads the selected project details into the main form.static voidMain entry point.private voidOpens the SearchDialog for searching projects.private voidCreate a backup of the H2 database file.private voidRestore the database from a backup.private voidPerform a scheduled backup of the H2 database file.private voidSchedules automatic daily database backups.private voidShow the About dialog containing version and author information.private voidShows a brief list of keyboard shortcuts in an information dialog.private voidDisplay a brief user guide in a dialog.private voidApply the selected theme and persist the choice to settings.private voidVerifies the integrity of the database and schedules automatic backups.Methods inherited from class JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, updateMethods inherited from class Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecoratedMethods inherited from class Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFrontMethods inherited from class Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTreeMethods inherited from class Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface MenuContainer
getFont, postEvent
-
Field Details
-
INTELLIJ_THEMES
Map of available IntelliJ themes for FlatLaf look and feel. Used to populate the Theme menu and apply selected theme. -
projectForm
Main project form panel displayed in the center of the window. -
instance
Singleton instance of the main application window.
-
-
Constructor Details
-
Main
public Main()Constructs the main application window, initializes database, menu bar, and content. Sets the window to maximized and visible.
-
-
Method Details
-
getInstance
Return the singleton `Main` instance, creating it if necessary.- Returns:
- the singleton `Main` instance
-
initializeDatabase
private void initializeDatabase()Initializes the database tables if they do not exist. Shows an error dialog if initialization fails. This method creates the minimal schema used by the application. It is safe to call multiple times as the DDL uses "IF NOT EXISTS" checks. -
verifyDatabaseAndScheduleBackups
private void verifyDatabaseAndScheduleBackups()Verifies the integrity of the database and schedules automatic backups. If verification fails the application will exit with an error dialog. -
createMenuBar
private void createMenuBar()Creates the menu bar with File, Project, and Theme menus. Theme menu allows user to select color scheme. Each menu item is wired to an action method defined on this class. -
showShortcutsDialog
Shows a brief list of keyboard shortcuts in an information dialog.- Parameters:
e- the ActionEvent that triggered displaying shortcuts
-
createMainContent
private void createMainContent()Sets up the main content area, including welcome label and project form panel. -
openSearchDialog
Opens the SearchDialog for searching projects.- Parameters:
e- the ActionEvent that triggered opening the dialog
-
scheduleDailyBackups
private void scheduleDailyBackups()Schedules automatic daily database backups. -
main
Main entry point. Sets system look and feel and launches the application. Ensures GUI is created on the Event Dispatch Thread. Supported command-line behavior: the application attempts to load a saved theme from `app_settings.properties` and falls back to a light theme.- Parameters:
args- command-line arguments (ignored by the GUI)
-
performBackup
Create a backup of the H2 database file.- Parameters:
e- the ActionEvent that triggered the backup
-
performScheduledBackup
private void performScheduledBackup()Perform a scheduled backup of the H2 database file. This is intended to be invoked by a timer task. -
performRestore
Restore the database from a backup. Implementation may show a file chooser and perform the restore operation.- Parameters:
e- the ActionEvent that triggered the restore
-
exitApplication
Exit the application immediately.- Parameters:
e- the ActionEvent that triggered exiting the application
-
toggleTheme
Apply the selected theme and persist the choice to settings.- Parameters:
e- the ActionEvent from the theme menu selection
-
showUserGuide
Display a brief user guide in a dialog.- Parameters:
e- the ActionEvent that triggered showing the user guide
-
showAboutDialog
Show the About dialog containing version and author information.- Parameters:
e- the ActionEvent that triggered showing the About dialog
-
ensureConsistentFontSize
private void ensureConsistentFontSize()Ensure a consistent large font is applied across common UI components. This is invoked on startup to improve readability on high-DPI displays. -
loadProjectDetails
-