diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskStatusPanel.java b/src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskStatusPanel.java index c636f5ed3ca769affbb84a07ceca55980668a176..e4589f29d237675cbabc5c9499c5ba60d586a396 100644 --- a/src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskStatusPanel.java +++ b/src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskStatusPanel.java @@ -3,61 +3,43 @@ package cz.muni.fi.pv168.project.ui.main.panel; import cz.muni.fi.pv168.project.data.task.TaskStatus; import cz.muni.fi.pv168.project.ui.resources.Icons; -import javax.swing.Icon; +import javax.swing.Box; +import javax.swing.JLabel; import javax.swing.JPanel; -import java.awt.Dimension; -import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; public class TaskStatusPanel extends JPanel { - private TaskStatus taskStatus; - private boolean isUrgent; - private final boolean biggerIcons; + private final GridBagConstraints gbc; + private final boolean useBiggerIcons; public TaskStatusPanel(TaskStatus status, boolean isTaskUrgent, boolean useBiggerIcons) { - this.biggerIcons = useBiggerIcons; - setTaskStatus(status, isTaskUrgent); + super(new GridBagLayout()); + this.useBiggerIcons = useBiggerIcons; this.setOpaque(false); - if (useBiggerIcons) { - this.setPreferredSize(new Dimension(24, 24)); - } else { - this.setPreferredSize(new Dimension(16, 16)); - } + gbc = new GridBagConstraints(); + gbc.fill = GridBagConstraints.BOTH; + gbc.anchor = GridBagConstraints.NORTHWEST; + gbc.weightx = 0; + gbc.weighty = 1; + + setTaskStatus(status, isTaskUrgent); } public void setTaskStatus(TaskStatus status, boolean isTaskUrgent) { - this.taskStatus = status; - this.isUrgent = isTaskUrgent; - } + this.removeAll(); - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - - Icon icon; - if (isUrgent) { - icon = biggerIcons ? Icons.TASK_STATUS_URGENT_ICON : Icons.TASK_STATUS_URGENT_SMALL_ICON; - } else { - switch (taskStatus) { - case PLANNED: - icon = biggerIcons ? Icons.TASK_STATUS_PLANNED_ICON : Icons.TASK_STATUS_PLANNED_SMALL_ICON; - break; - case IN_PROGRESS: - icon = biggerIcons ? Icons.TASK_STATUS_IN_PROGRESS_ICON : Icons.TASK_STATUS_IN_PROGRESS_SMALL_ICON; - break; - case FINISHED: - icon = biggerIcons ? Icons.TASK_STATUS_FINISHED_ICON : Icons.TASK_STATUS_FINISHED_SMALL_ICON; - break; - default: - return; - } - } + gbc.gridy = 0; + this.add(new JLabel(Icons.getTaskStatusIcon(status, useBiggerIcons)), gbc); + + if (isTaskUrgent && !status.equals(TaskStatus.FINISHED)) { + gbc.gridy = 1; + this.add(Box.createVerticalStrut(1), gbc); - if (icon != null) { - int x = (this.getWidth() - icon.getIconWidth()) / 2; - int y = (this.getHeight() - icon.getIconWidth()) / 2; - icon.paintIcon(this, g, x, y); + gbc.gridy = 2; + this.add(new JLabel(Icons.getUrgencyIcon(useBiggerIcons)), gbc); } } } diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/resources/Icons.java b/src/main/java/cz/muni/fi/pv168/project/ui/resources/Icons.java index c39ccbb831ee2cad6b350c9104c572cae0e74728..0c9cbde55f0ad78e5c84d36252762291d8cc4d73 100644 --- a/src/main/java/cz/muni/fi/pv168/project/ui/resources/Icons.java +++ b/src/main/java/cz/muni/fi/pv168/project/ui/resources/Icons.java @@ -1,5 +1,7 @@ package cz.muni.fi.pv168.project.ui.resources; +import cz.muni.fi.pv168.project.data.task.TaskStatus; + import javax.swing.*; import java.awt.Window; import java.net.URL; @@ -76,4 +78,27 @@ public final class Icons { window.setIconImage(((ImageIcon) Icons.LOGO_ICON).getImage()); } } + + public static Icon getUrgencyIcon(boolean useBigIcons) { + return useBigIcons ? Icons.TASK_STATUS_URGENT_ICON : Icons.TASK_STATUS_URGENT_SMALL_ICON; + } + + public static Icon getTaskStatusIcon(TaskStatus status, boolean useBigIcons) { + Icon result = null; + + switch (status) { + case PLANNED: + result = useBigIcons ? TASK_STATUS_PLANNED_ICON : TASK_STATUS_PLANNED_SMALL_ICON; + break; + case IN_PROGRESS: + result = useBigIcons ? TASK_STATUS_IN_PROGRESS_ICON : TASK_STATUS_IN_PROGRESS_SMALL_ICON; + break; + case FINISHED: + result = useBigIcons ? TASK_STATUS_FINISHED_ICON : TASK_STATUS_FINISHED_SMALL_ICON; + break; + default: + } + + return result; + } }