Class ProjectFormPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ProjectFormPanel
- All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Panel for entering and submitting new 3D print project data.
Includes fields for name, type, tags, notes, dates, and folder selection.
Features date picker and form clearing after successful submission.
Extend this class to add more fields or validation logic.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested 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 JButtonButton to add the entered date to the list of last printed dates.private JButtonButton to submit a new project to the database.private JButtonButton to open a folder chooser for selecting the project folder.private DefaultListModel<String> List model holding last-printed date strings.private JButtonButton to open a date picker dialog.private JFormattedTextFieldDate input field for last printed date (format yyyy-MM-dd).UI list showing last-printed dates.private JButtonButton to load an existing project into the form.private JTextFieldProject name input field.private JTextAreaNotes input area for additional project information.private JTextFieldRead-only field showing the selected project folder path.private JTextFieldInput field for the project recipient.Multi-selection list of project tags/categories.Project type dropdown.private JButtonButton to remove the selected date from the date list.private JButtonButton to open the search dialog for projects.private FileCurrently selected project folder on disk (may be null).private JButtonButton to update an existing project's details.Fields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionConstructs the project form panel and lays out all fields and buttons. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidAdds the entered date to the list of last printed dates.private voidValidates all fields and submits the new project to the database.private voidOpens a folder chooser dialog for selecting the project folder.private voidClears all form fields and resets to default values without altering layout.voidfilterProjects(String query) Filters the projects displayed in the panel based on the search query.private voidPrompt for a project ID and load its data into the form fields.private voidOpens a date picker dialog for selecting a date.private voidRemoves the selected date from the list of last printed dates.voidsetProjectDetails(String name, String type, String description, String filePath) Sets the project details in the form fields.private voidPrompt for a project ID and update the project's details in the database using the values currently set in the form.private booleanvalidateDate(String date) Validates the date format and ensures it is not in the future.private booleanvalidateFilePath(String path) Validates the file path for existence and accessibility.private booleanvalidateProjectName(String name) Validates the project name for length and invalid characters.private booleanvalidateTextLengths(String name, String description) Validates the length of the project name and description.Methods inherited from class JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
projectNameField
Project name input field. -
projectTypeComboBox
-
lastPrintedDateField
Date input field for last printed date (format yyyy-MM-dd). -
projectNotesArea
Notes input area for additional project information. -
addDateButton
Button to add the entered date to the list of last printed dates. -
datePickerButton
Button to open a date picker dialog. -
removeDateButton
Button to remove the selected date from the date list. -
projectPathField
Read-only field showing the selected project folder path. -
browseButton
Button to open a folder chooser for selecting the project folder. -
addProjectButton
Button to submit a new project to the database. -
searchProjectsButton
Button to open the search dialog for projects. -
selectedFolder
Currently selected project folder on disk (may be null). -
dateListModel
List model holding last-printed date strings. -
lastPrintedDatesList
-
projectRecipientField
Input field for the project recipient. -
projectTagsList
-
loadProjectButton
Button to load an existing project into the form. -
updateProjectButton
Button to update an existing project's details.
-
-
Constructor Details
-
ProjectFormPanel
public ProjectFormPanel()Constructs the project form panel and lays out all fields and buttons. All fields are mandatory for submission.
-
-
Method Details
-
browseForFolder
Opens a folder chooser dialog for selecting the project folder. Updates the projectPathField with the selected folder path.- Parameters:
e- Action event from browse button
-
addDateToList
Adds the entered date to the list of last printed dates.- Parameters:
e- Action event from add date button
-
openDatePicker
Opens a date picker dialog for selecting a date.- Parameters:
e- Action event from date picker button
-
removeSelectedDate
Removes the selected date from the list of last printed dates.- Parameters:
e- Action event from remove date button
-
clearForm
private void clearForm()Clears all form fields and resets to default values without altering layout. -
validateProjectName
Validates the project name for length and invalid characters.- Parameters:
name- The project name to validate.- Returns:
- True if valid, false otherwise.
-
validateDate
Validates the date format and ensures it is not in the future.- Parameters:
date- The date string to validate.- Returns:
- True if valid, false otherwise.
-
validateFilePath
Validates the file path for existence and accessibility.- Parameters:
path- The file path to validate.- Returns:
- True if valid, false otherwise.
-
validateTextLengths
-
addNewProject
Validates all fields and submits the new project to the database. Copies the project folder, inserts project data, and adds print dates. Clears the form after successful submission. Shows error dialogs if any step fails.- Parameters:
e- Action event from add project button
-
filterProjects
Filters the projects displayed in the panel based on the search query.- Parameters:
query- The search query to filter projects.
-
loadProjectData
Prompt for a project ID and load its data into the form fields.- Parameters:
e- the ActionEvent that triggered loading a project
-
updateProjectData
Prompt for a project ID and update the project's details in the database using the values currently set in the form.- Parameters:
e- the ActionEvent that triggered the update
-
setProjectDetails
-