Skip to content
Snippets Groups Projects
Commit 96313f5f authored by Ondřej Hrdlička's avatar Ondřej Hrdlička
Browse files

Made TaskStatusPanel use JLabels to show Icons

Also now shows both status and urgency
parent 686e94a1
No related branches found
No related tags found
2 merge requests!52Final project MR,!45Activating most of the app
......@@ -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);
}
}
}
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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment