diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/ActivitiesMain.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/ActivitiesMain.java deleted file mode 100644 index 62c8284..0000000 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/ActivitiesMain.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.nanoboot.utils.timecalc.app; - -import org.nanoboot.utils.timecalc.persistence.impl.sqlite.ActivityRepositorySQLiteImpl; -import org.nanoboot.utils.timecalc.persistence.impl.sqlite.SqliteConnectionFactory; -import org.nanoboot.utils.timecalc.swing.progress.Time; -import org.nanoboot.utils.timecalc.swing.windows.ActivitiesWindow; - -/** - * @author pc00289 - * @since 05.04.2024 - */ -public class ActivitiesMain { - - public static void main(String[] args) { - TimeCalcConfiguration timeCalcConfiguration = - new TimeCalcConfiguration(); - timeCalcConfiguration - .loadFromTimeCalcProperties(TimeCalcProperties.getInstance()); - ActivitiesWindow activitiesWindow = new ActivitiesWindow( - new ActivityRepositorySQLiteImpl(new SqliteConnectionFactory()), - new Time(), - timeCalcConfiguration - ); - activitiesWindow.setVisible(true); - ; - } -} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/Main.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/Main.java index d4eb83b..797e8a9 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/Main.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/Main.java @@ -3,13 +3,29 @@ package org.nanoboot.utils.timecalc.app; import com.formdev.flatlaf.FlatLightLaf; import java.io.IOException; +import java.net.URISyntaxException; +import java.util.function.Supplier; /** * @author Robert Vokac * @since 31.01.2024 */ public class Main { - private static final boolean ONLY_ACTIVITIES_WINDOW_IS_ALLOWED = false; + public static final boolean ONLY_ACTIVITIES_WINDOW_IS_ALLOWED = ((Supplier) () -> { + + try { + return !Main.class + .getProtectionDomain() + .getCodeSource() + .getLocation() + .toURI() + .getPath().contains("time-calc"); + } catch (URISyntaxException e) { + return true; + } + }).get(); + + public static final boolean ACTIVITIES_WINDOW_SHOW_SORTKEY = false; public static void main(String[] args) throws IOException { // for(File f:FileConstants.CLIMATE_TXT.getParentFile().listFiles()) { // if(f.getName().contains("weather")) { @@ -18,11 +34,7 @@ public class Main { // } // } FlatLightLaf.setup(); - if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { - ActivitiesMain.main(args); - } else { - TimeCalcApp timeCalcApp = new TimeCalcApp(); - timeCalcApp.start(args); - } + TimeCalcApp timeCalcApp = new TimeCalcApp(); + timeCalcApp.start(args); } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java index d4dddec..8e02bd0 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcApp.java @@ -25,6 +25,8 @@ import org.nanoboot.utils.timecalc.persistence.api.VersionRepositoryApi; import org.nanoboot.utils.timecalc.persistence.impl.sqlite.SqliteConnectionFactory; import org.nanoboot.utils.timecalc.persistence.impl.sqlite.VersionRepositorySQLiteImpl; +import static org.nanoboot.utils.timecalc.app.Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED; + /** * @author Robert Vokac * @since 31.01.2024 @@ -80,6 +82,9 @@ public class TimeCalcApp { timeCalcMainWindow.setVisible(false); timeCalcMainWindow.dispose(); } + if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { + break; + } } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/persistence/impl/sqlite/WorkingDayRepositorySQLiteImpl.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/persistence/impl/sqlite/WorkingDayRepositorySQLiteImpl.java index b9f8788..d91396b 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/persistence/impl/sqlite/WorkingDayRepositorySQLiteImpl.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/persistence/impl/sqlite/WorkingDayRepositorySQLiteImpl.java @@ -1,5 +1,6 @@ package org.nanoboot.utils.timecalc.persistence.impl.sqlite; +import org.nanoboot.utils.timecalc.app.Main; import org.nanoboot.utils.timecalc.app.TimeCalcException; import org.nanoboot.utils.timecalc.entity.WorkingDay; import org.nanoboot.utils.timecalc.persistence.api.WorkingDayRepositoryApi; @@ -28,7 +29,7 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi { public void create(WorkingDay workingDay) { System.out.println("Going to create: " + workingDay.toString()); - if(!Utils.askYesNo(null, "Do you want to create new Working Day? " + workingDay, "Creation of new Working Day")) { + if(Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED || !Utils.askYesNo(null, "Do you want to create new Working Day? " + workingDay, "Creation of new Working Day")) { return; } StringBuilder sb = new StringBuilder(); @@ -140,7 +141,7 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi { System.out.println("Nothing to update."); return; } - if(!Utils.askYesNo(null, "Do you want to update this Working Day? " + workingDay, "Update of Working Day")) { + if(Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED || !Utils.askYesNo(null, "Do you want to update this Working Day? " + workingDay, "Update of Working Day")) { return; } StringBuilder sb = new StringBuilder(); diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityHeader.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityHeader.java index 1968cd3..ddabe85 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityHeader.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityHeader.java @@ -1,5 +1,6 @@ package org.nanoboot.utils.timecalc.swing.common; +import org.nanoboot.utils.timecalc.app.Main; import org.nanoboot.utils.timecalc.swing.controls.TTextField; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -21,7 +22,7 @@ public class ActivityHeader extends JPanel { public static final Dimension PREFERRED_SIZE4 = new Dimension(40, 40); public static final Dimension PREFERRED_SIZE2 = new Dimension(100, 40); - //private TTextField sortkey = new TTextField("Sortkey"); + private TTextField sortkey = new TTextField("Sortkey"); private TTextField name = new TTextField("Name"); private TTextField comment = new TTextField("Comment"); private TTextField ticket = new TTextField("Ticket"); @@ -36,7 +37,7 @@ public class ActivityHeader extends JPanel { public ActivityHeader() { this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); - //add(sortkey); + if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) add(sortkey); add(name); add(comment); add(ticket); @@ -48,7 +49,7 @@ public class ActivityHeader extends JPanel { add(done); add(todo); - //sortkey.setPreferredSize(PREFERRED_SIZE1); + sortkey.setPreferredSize(PREFERRED_SIZE1); name.setPreferredSize(PREFERRED_SIZE); comment.setPreferredSize(PREFERRED_SIZE); ticket.setPreferredSize(PREFERRED_SIZE1); @@ -60,7 +61,7 @@ public class ActivityHeader extends JPanel { done.setPreferredSize(PREFERRED_SIZE3); todo.setPreferredSize(PREFERRED_SIZE3); - //sortkey.setEditable(false); + sortkey.setEditable(false); name.setEditable(false); comment.setEditable(false); ticket.setEditable(false); @@ -72,7 +73,7 @@ public class ActivityHeader extends JPanel { done.setEditable(false); todo.setEditable(false); - //sortkey.setFont(FONT); + sortkey.setFont(FONT); name.setFont(FONT); comment.setFont(FONT); ticket.setFont(FONT); @@ -84,7 +85,7 @@ public class ActivityHeader extends JPanel { done.setFont(FONT); todo.setFont(FONT); - //sortkey.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); + sortkey.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); name.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); comment.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); ticket.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); @@ -96,9 +97,9 @@ public class ActivityHeader extends JPanel { done.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); todo.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); - //this.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 1)); + this.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 1)); setAlignmentX(LEFT_ALIGNMENT); - //sortkey.setVisible(false); + sortkey.setVisible(false); } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityPanel.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityPanel.java index f5e21ad..5e1742d 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityPanel.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/ActivityPanel.java @@ -1,5 +1,6 @@ package org.nanoboot.utils.timecalc.swing.common; +import org.nanoboot.utils.timecalc.app.Main; import org.nanoboot.utils.timecalc.swing.controls.MouseClickedListener; import org.nanoboot.utils.timecalc.swing.controls.SmallTButton; import org.nanoboot.utils.timecalc.swing.controls.TTextField; @@ -97,7 +98,7 @@ public class ActivityPanel extends JPanel implements Comparable { @Getter private final Activity activity; - //private final TTextField sortkey; + private final TTextField sortkey; private final TTextField name; private final TTextField comment; private final TTextField ticket; @@ -125,7 +126,7 @@ public class ActivityPanel extends JPanel implements Comparable { { this.subject = new TTextFieldForActivityPanel("", "subject"); this.totalComment = new TTextFieldForActivityPanel("", "totalComment"); - //this.sortkey = new TTextFieldForActivityPanel("1", "sortkey", (a, r)->a.setSortkey(Integer.parseInt(r)), true); + this.sortkey = new TTextFieldForActivityPanel("1", "sortkey", (a, r)->a.setSortkey(Integer.parseInt(r)), true); this.name = new TTextFieldForActivityPanel("", "name", (a, r)->{a.setName(r);getSubject().setText(a.createSubject());}, false); this.comment = new TTextFieldForActivityPanel("", "comment", (a, r)->{a.setComment(r);getTotalComment().setText(a.createTotalComment());}, false); this.ticket = new TTextFieldForActivityPanel("", "ticket", @@ -147,7 +148,7 @@ public class ActivityPanel extends JPanel implements Comparable { } this.dayPanel = dayPanel; - //add(sortkey); + if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) add(sortkey); add(name); add(comment); add(ticket); @@ -158,7 +159,7 @@ public class ActivityPanel extends JPanel implements Comparable { add(totalComment); add(today); add(remains); - //sortkey.setVisible(false); + sortkey.setVisible(false); name.setHorizontalAlignment(JTextField.LEFT); comment.setHorizontalAlignment(JTextField.LEFT); ticket.setHorizontalAlignment(JTextField.LEFT); @@ -178,7 +179,7 @@ public class ActivityPanel extends JPanel implements Comparable { moveThisButton.setFont(SwingUtils.SMALL_FONT); moveBeforeButton.setFont(SwingUtils.SMALL_FONT); - //sortkey.setPreferredSize(PREFERRED_SIZE1); + sortkey.setPreferredSize(PREFERRED_SIZE1); name.setPreferredSize(PREFERRED_SIZE); comment.setPreferredSize(PREFERRED_SIZE); ticket.setPreferredSize(PREFERRED_SIZE1); @@ -196,7 +197,7 @@ public class ActivityPanel extends JPanel implements Comparable { moveBeforeButton.setPreferredSize(PREFERRED_SIZE1); this.setPreferredSize(new Dimension(getWidth(), 40)); - //sortkey.setText(String.valueOf(activity.getSortkey())); + sortkey.setText(String.valueOf(activity.getSortkey())); name.setText(activity.getName()); comment.setText(activity.getComment()); ticket.setText(activity.getTicket()); @@ -284,8 +285,8 @@ public class ActivityPanel extends JPanel implements Comparable { ActivityPanel activityPanelForActivity = dayPanel.getActivityPanelForActivity(activityToBeMoved); activityPanelForActivity.getActivity().setSortkey(newSortKey); -// activityPanelForActivity.getSortkeyTTextField().setText( -// String.valueOf(newSortKey)); + activityPanelForActivity.getSortkeyTTextField().setText( + String.valueOf(newSortKey)); activityRepository.update(activityToBeMoved); dayPanel.sortActivityPanels(); @@ -297,7 +298,7 @@ public class ActivityPanel extends JPanel implements Comparable { public int compareTo(ActivityPanel o) { return this.getActivity().compareTo(o.getActivity()); } -// public TTextField getSortkeyTTextField() { -// return sortkey; -// } + public TTextField getSortkeyTTextField() { + return sortkey; + } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/DayPanel.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/DayPanel.java index b90a119..f3f66c4 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/DayPanel.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/DayPanel.java @@ -1,6 +1,7 @@ package org.nanoboot.utils.timecalc.swing.common; import lombok.Getter; +import org.nanoboot.utils.timecalc.app.Main; import org.nanoboot.utils.timecalc.app.TimeCalcConfiguration; import org.nanoboot.utils.timecalc.entity.Activity; import org.nanoboot.utils.timecalc.persistence.api.ActivityRepositoryApi; @@ -301,7 +302,7 @@ public class DayPanel extends JPanel { sortkey = sortkey + sortkeySpace; ap.getActivity().setSortkey(sortkey); activityRepository.update(ap.getActivity()); -// ap.getSortkeyTTextField().setText(String.valueOf(sortkey)); + if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) ap.getSortkeyTTextField().setText(String.valueOf(sortkey)); } } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ActivitiesWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ActivitiesWindow.java index bb3f5eb..b759ab1 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ActivitiesWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ActivitiesWindow.java @@ -1,5 +1,6 @@ package org.nanoboot.utils.timecalc.swing.windows; +import org.nanoboot.utils.timecalc.app.Main; import org.nanoboot.utils.timecalc.app.TimeCalcConfiguration; import org.nanoboot.utils.timecalc.swing.controls.TWindow; import org.nanoboot.utils.timecalc.swing.controls.TTabbedPane; @@ -19,6 +20,8 @@ import org.nanoboot.utils.timecalc.swing.common.SwingUtils; import org.nanoboot.utils.timecalc.swing.common.YearPanel; import org.nanoboot.utils.timecalc.swing.progress.Time; +import static org.nanoboot.utils.timecalc.app.Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED; + /** * @author Robert Vokac * @since 16.02.2024 @@ -30,7 +33,7 @@ public class ActivitiesWindow extends TWindow { public ActivitiesWindow(ActivityRepositoryApi activityRepositoryApiIn, Time time, TimeCalcConfiguration timeCalcConfiguration) { setSize(1600, 800); - setTitle("Activities"); + setTitle(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED ? "Activity Report" : "Activities"); this.activityRepository = activityRepositoryApiIn; this.years = new HashMap<>(); @@ -54,7 +57,20 @@ public class ActivitiesWindow extends TWindow { JButton exitButton = new JButton("Exit"); exitButton.setBounds(SwingUtils.MARGIN + addYearButton.getWidth() + SwingUtils.MARGIN, addYearButton.getY(), 150, 30); add(exitButton); - exitButton.addActionListener(e -> activitiesWindow.setVisible(false)); + exitButton.addActionListener(e -> { + activitiesWindow.setVisible(false); + activitiesWindow.dispose(); + if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { + System.exit(0); + } + }); + + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent e) { + exitButton.doClick(); + } + }); tp.setBounds(addYearButton.getX(), addYearButton.getY() + addYearButton.getHeight() + SwingUtils.MARGIN, 1500, 750); yearsList.forEach(y -> { diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java index f607c1c..2fbb48c 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java @@ -82,6 +82,8 @@ import javax.swing.Timer; import org.nanoboot.utils.timecalc.swing.progress.ProgressDot; import org.nanoboot.utils.timecalc.utils.property.ReadOnlyProperty; +import static org.nanoboot.utils.timecalc.app.Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED; + /** * @author Robert Vokac * @since 08.02.2024 @@ -688,7 +690,7 @@ public class MainWindow extends TWindow { exitButton.getY() + exitButton.getHeight() + SwingUtils.MARGIN); setLayout(null); - setVisible(true); + setVisible(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED ? false : true); setTitle(getWindowTitle()); @@ -1105,6 +1107,9 @@ public class MainWindow extends TWindow { } while (true) { + if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { + break; + } if(allowOnlyBasicFeaturesProperty.getValue()) { if(timeCalcConfiguration.batteryDayVisibleProperty.isDisabled()) { @@ -1169,7 +1174,7 @@ public class MainWindow extends TWindow { workingDaysWindow.setVisible(false); workingDaysWindow.dispose(); } - if (activitiesWindow != null) { + if (!ONLY_ACTIVITIES_WINDOW_IS_ALLOWED && activitiesWindow != null) { activitiesWindow.setVisible(false); activitiesWindow.dispose(); } @@ -1181,6 +1186,10 @@ public class MainWindow extends TWindow { //timeCalcConfiguration.saveToTimeCalcProperties(); setVisible(false); dispose(); + + if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { + openActivitiesWindow(); + } } private final Set alreadyShownPercents = new HashSet<>();