Loading src/main/java/cz/muni/fi/pv168/project/ui/action/AbstractAction.java +3 −9 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package cz.muni.fi.pv168.project.ui.action; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.ui.dialog.factory.DialogFactory; import cz.muni.fi.pv168.project.ui.main.tab.ListHolder; import org.jetbrains.annotations.Nullable; import javax.swing.JList; import java.util.ArrayList; Loading @@ -13,14 +12,13 @@ import java.util.function.Supplier; public abstract class AbstractAction<T> extends javax.swing.AbstractAction { @Nullable private final Supplier<Task> taskSupplier; private IntPredicate enabledCondition; protected final ListHolder<T> listHolder; private final List<Updatable> updatables = new ArrayList<>(); public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition, @Nullable Supplier<Task> taskSupplier) { public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition, Supplier<Task> taskSupplier) { this.enabledCondition = enabledCondition; this.taskSupplier = taskSupplier; this.listHolder = listHolder; Loading @@ -29,7 +27,7 @@ public abstract class AbstractAction<T> extends javax.swing.AbstractAction { } public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition) { this(listHolder, enabledCondition, null); this(listHolder, enabledCondition, () -> null); } private void updateEnabledStatus() { Loading Loading @@ -57,10 +55,6 @@ public abstract class AbstractAction<T> extends javax.swing.AbstractAction { } public void triggerUpdate() { if (taskSupplier != null) { updatables.forEach(updatable -> updatable.updateFrom(taskSupplier.get())); } else { updatables.forEach(updatable -> updatable.updateFrom(null)); } } } src/main/java/cz/muni/fi/pv168/project/ui/action/EditAction.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public final class EditAction<T> extends AbstractAction<T> { } public EditAction(ListHolder<T> listHolder, Icon icon, String description) { this(listHolder, icon, description, null); this(listHolder, icon, description, () -> null); } @Override Loading src/main/java/cz/muni/fi/pv168/project/ui/component/ModeledJList.javadeleted 100644 → 0 +0 −49 Original line number Diff line number Diff line package cz.muni.fi.pv168.project.ui.component; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.border.TitledBorder; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; public final class ModeledJList<T> extends JList<T> { private DefaultListModel<T> model; public ModeledJList(ListCellRenderer<T> renderer) { this(Optional.empty(), renderer, new ArrayList<>()); } public ModeledJList(String listName, ListCellRenderer<T> renderer, List<T> data) { this(Optional.of(listName), renderer, data); } private ModeledJList(Optional<String> borderTitle, ListCellRenderer<T> renderer, List<T> data) { model = new DefaultListModel<>(); model.addAll(data); this.setModel(model); this.setCellRenderer(renderer); this.setEnabled(true); this.setOpaque(false); borderTitle.ifPresent(name -> this.setBorder(new TitledBorder(name))); } public void setCustomListModel(DefaultListModel<T> customListModel) { super.setModel(customListModel); this.model = customListModel; } public List<T> getValues() { return Collections.list(model.elements()); } public void setValues(List<T> values) { model.clear(); model.addAll(values); } } src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskPanel.java +1 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package cz.muni.fi.pv168.project.ui.main.panel; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.ui.action.Updatable; import cz.muni.fi.pv168.project.ui.component.ModeledJList; import cz.muni.fi.pv168.project.ui.main.panel.listholder.CategoryHolderPanel; import cz.muni.fi.pv168.project.ui.main.panel.listholder.DependencyHolderPanel; import cz.muni.fi.pv168.project.ui.main.panel.listholder.SubTaskHolderPanel; Loading Loading @@ -73,7 +72,7 @@ public class TaskPanel extends JPanel implements Updatable { var allLists = List.of(categoryHolder.getList(), subTaskHolder.getList(), dependencyHolder.getList()); for (JList<?> list : allLists) { list.addListSelectionListener(e -> { ModeledJList<?> source = (ModeledJList<?>) e.getSource(); JList<?> source = (JList<?>) e.getSource(); if (source.getSelectedIndex() != -1) { for (JList<?> list1 : allLists) { Loading src/main/java/cz/muni/fi/pv168/project/ui/main/panel/listholder/AbstractHolderPanel.java +9 −5 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package cz.muni.fi.pv168.project.ui.main.panel.listholder; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.model.db.AbstractTaskPropertyListDataModel; import cz.muni.fi.pv168.project.ui.action.Updatable; import cz.muni.fi.pv168.project.ui.component.ModeledJList; import cz.muni.fi.pv168.project.ui.main.panel.CounterPanel; import cz.muni.fi.pv168.project.ui.main.tab.ListHolder; import org.jetbrains.annotations.Nullable; Loading @@ -21,7 +20,7 @@ import java.util.function.Predicate; public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable { protected final ModeledJList<T> jList; protected final JList<T> jList; private final JPanel panel; private Optional<CounterPanel<T>> counterPanel = Optional.empty(); Loading @@ -30,8 +29,12 @@ public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable protected AbstractHolderPanel(AbstractTaskPropertyListDataModel<T> model, String panelName, ListCellRenderer<T> renderer, Optional<Predicate<T>> maybeCounter) { this.dataModel = model; jList = new ModeledJList<>(renderer); jList.setCustomListModel(model); jList = new JList<T>(); jList.setCellRenderer(renderer); jList.setEnabled(true); jList.setOpaque(false); jList.setModel(model); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; Loading Loading @@ -72,7 +75,8 @@ public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable public void updateFrom(@Nullable Task task) { if (task != null) { dataModel.setParentTask(task); jList.setValues(dataModel.fetchAll()); dataModel.clear(); dataModel.addAll(dataModel.fetchAll()); } counterPanel.ifPresent(CounterPanel::updateCounter); } Loading Loading
src/main/java/cz/muni/fi/pv168/project/ui/action/AbstractAction.java +3 −9 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package cz.muni.fi.pv168.project.ui.action; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.ui.dialog.factory.DialogFactory; import cz.muni.fi.pv168.project.ui.main.tab.ListHolder; import org.jetbrains.annotations.Nullable; import javax.swing.JList; import java.util.ArrayList; Loading @@ -13,14 +12,13 @@ import java.util.function.Supplier; public abstract class AbstractAction<T> extends javax.swing.AbstractAction { @Nullable private final Supplier<Task> taskSupplier; private IntPredicate enabledCondition; protected final ListHolder<T> listHolder; private final List<Updatable> updatables = new ArrayList<>(); public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition, @Nullable Supplier<Task> taskSupplier) { public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition, Supplier<Task> taskSupplier) { this.enabledCondition = enabledCondition; this.taskSupplier = taskSupplier; this.listHolder = listHolder; Loading @@ -29,7 +27,7 @@ public abstract class AbstractAction<T> extends javax.swing.AbstractAction { } public AbstractAction(ListHolder<T> listHolder, IntPredicate enabledCondition) { this(listHolder, enabledCondition, null); this(listHolder, enabledCondition, () -> null); } private void updateEnabledStatus() { Loading Loading @@ -57,10 +55,6 @@ public abstract class AbstractAction<T> extends javax.swing.AbstractAction { } public void triggerUpdate() { if (taskSupplier != null) { updatables.forEach(updatable -> updatable.updateFrom(taskSupplier.get())); } else { updatables.forEach(updatable -> updatable.updateFrom(null)); } } }
src/main/java/cz/muni/fi/pv168/project/ui/action/EditAction.java +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public final class EditAction<T> extends AbstractAction<T> { } public EditAction(ListHolder<T> listHolder, Icon icon, String description) { this(listHolder, icon, description, null); this(listHolder, icon, description, () -> null); } @Override Loading
src/main/java/cz/muni/fi/pv168/project/ui/component/ModeledJList.javadeleted 100644 → 0 +0 −49 Original line number Diff line number Diff line package cz.muni.fi.pv168.project.ui.component; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.border.TitledBorder; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; public final class ModeledJList<T> extends JList<T> { private DefaultListModel<T> model; public ModeledJList(ListCellRenderer<T> renderer) { this(Optional.empty(), renderer, new ArrayList<>()); } public ModeledJList(String listName, ListCellRenderer<T> renderer, List<T> data) { this(Optional.of(listName), renderer, data); } private ModeledJList(Optional<String> borderTitle, ListCellRenderer<T> renderer, List<T> data) { model = new DefaultListModel<>(); model.addAll(data); this.setModel(model); this.setCellRenderer(renderer); this.setEnabled(true); this.setOpaque(false); borderTitle.ifPresent(name -> this.setBorder(new TitledBorder(name))); } public void setCustomListModel(DefaultListModel<T> customListModel) { super.setModel(customListModel); this.model = customListModel; } public List<T> getValues() { return Collections.list(model.elements()); } public void setValues(List<T> values) { model.clear(); model.addAll(values); } }
src/main/java/cz/muni/fi/pv168/project/ui/main/panel/TaskPanel.java +1 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package cz.muni.fi.pv168.project.ui.main.panel; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.ui.action.Updatable; import cz.muni.fi.pv168.project.ui.component.ModeledJList; import cz.muni.fi.pv168.project.ui.main.panel.listholder.CategoryHolderPanel; import cz.muni.fi.pv168.project.ui.main.panel.listholder.DependencyHolderPanel; import cz.muni.fi.pv168.project.ui.main.panel.listholder.SubTaskHolderPanel; Loading Loading @@ -73,7 +72,7 @@ public class TaskPanel extends JPanel implements Updatable { var allLists = List.of(categoryHolder.getList(), subTaskHolder.getList(), dependencyHolder.getList()); for (JList<?> list : allLists) { list.addListSelectionListener(e -> { ModeledJList<?> source = (ModeledJList<?>) e.getSource(); JList<?> source = (JList<?>) e.getSource(); if (source.getSelectedIndex() != -1) { for (JList<?> list1 : allLists) { Loading
src/main/java/cz/muni/fi/pv168/project/ui/main/panel/listholder/AbstractHolderPanel.java +9 −5 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package cz.muni.fi.pv168.project.ui.main.panel.listholder; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.model.db.AbstractTaskPropertyListDataModel; import cz.muni.fi.pv168.project.ui.action.Updatable; import cz.muni.fi.pv168.project.ui.component.ModeledJList; import cz.muni.fi.pv168.project.ui.main.panel.CounterPanel; import cz.muni.fi.pv168.project.ui.main.tab.ListHolder; import org.jetbrains.annotations.Nullable; Loading @@ -21,7 +20,7 @@ import java.util.function.Predicate; public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable { protected final ModeledJList<T> jList; protected final JList<T> jList; private final JPanel panel; private Optional<CounterPanel<T>> counterPanel = Optional.empty(); Loading @@ -30,8 +29,12 @@ public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable protected AbstractHolderPanel(AbstractTaskPropertyListDataModel<T> model, String panelName, ListCellRenderer<T> renderer, Optional<Predicate<T>> maybeCounter) { this.dataModel = model; jList = new ModeledJList<>(renderer); jList.setCustomListModel(model); jList = new JList<T>(); jList.setCellRenderer(renderer); jList.setEnabled(true); jList.setOpaque(false); jList.setModel(model); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; Loading Loading @@ -72,7 +75,8 @@ public abstract class AbstractHolderPanel<T> implements ListHolder<T>, Updatable public void updateFrom(@Nullable Task task) { if (task != null) { dataModel.setParentTask(task); jList.setValues(dataModel.fetchAll()); dataModel.clear(); dataModel.addAll(dataModel.fetchAll()); } counterPanel.ifPresent(CounterPanel::updateCounter); } Loading