Added the possibility to view only activities window

This commit is contained in:
Robert Vokac 2024-04-30 18:22:41 +02:00
parent a9333194c7
commit eab2a69bc4
No known key found for this signature in database
GPG Key ID: C459E1E4B4A986BB
9 changed files with 79 additions and 60 deletions

View File

@ -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);
;
}
}

View File

@ -3,13 +3,29 @@ package org.nanoboot.utils.timecalc.app;
import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.FlatLightLaf;
import java.io.IOException; import java.io.IOException;
import java.net.URISyntaxException;
import java.util.function.Supplier;
/** /**
* @author Robert Vokac * @author Robert Vokac
* @since 31.01.2024 * @since 31.01.2024
*/ */
public class Main { public class Main {
private static final boolean ONLY_ACTIVITIES_WINDOW_IS_ALLOWED = false; public static final boolean ONLY_ACTIVITIES_WINDOW_IS_ALLOWED = ((Supplier<Boolean>) () -> {
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 { public static void main(String[] args) throws IOException {
// for(File f:FileConstants.CLIMATE_TXT.getParentFile().listFiles()) { // for(File f:FileConstants.CLIMATE_TXT.getParentFile().listFiles()) {
// if(f.getName().contains("weather")) { // if(f.getName().contains("weather")) {
@ -18,11 +34,7 @@ public class Main {
// } // }
// } // }
FlatLightLaf.setup(); FlatLightLaf.setup();
if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) { TimeCalcApp timeCalcApp = new TimeCalcApp();
ActivitiesMain.main(args); timeCalcApp.start(args);
} else {
TimeCalcApp timeCalcApp = new TimeCalcApp();
timeCalcApp.start(args);
}
} }
} }

View File

@ -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.SqliteConnectionFactory;
import org.nanoboot.utils.timecalc.persistence.impl.sqlite.VersionRepositorySQLiteImpl; 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 * @author Robert Vokac
* @since 31.01.2024 * @since 31.01.2024
@ -80,6 +82,9 @@ public class TimeCalcApp {
timeCalcMainWindow.setVisible(false); timeCalcMainWindow.setVisible(false);
timeCalcMainWindow.dispose(); timeCalcMainWindow.dispose();
} }
if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) {
break;
}
} }
} }

View File

@ -1,5 +1,6 @@
package org.nanoboot.utils.timecalc.persistence.impl.sqlite; 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.app.TimeCalcException;
import org.nanoboot.utils.timecalc.entity.WorkingDay; import org.nanoboot.utils.timecalc.entity.WorkingDay;
import org.nanoboot.utils.timecalc.persistence.api.WorkingDayRepositoryApi; import org.nanoboot.utils.timecalc.persistence.api.WorkingDayRepositoryApi;
@ -28,7 +29,7 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
public void create(WorkingDay workingDay) { public void create(WorkingDay workingDay) {
System.out.println("Going to create: " + workingDay.toString()); 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; return;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -140,7 +141,7 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
System.out.println("Nothing to update."); System.out.println("Nothing to update.");
return; 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; return;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View File

@ -1,5 +1,6 @@
package org.nanoboot.utils.timecalc.swing.common; package org.nanoboot.utils.timecalc.swing.common;
import org.nanoboot.utils.timecalc.app.Main;
import org.nanoboot.utils.timecalc.swing.controls.TTextField; import org.nanoboot.utils.timecalc.swing.controls.TTextField;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; 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_SIZE4 = new Dimension(40, 40);
public static final Dimension PREFERRED_SIZE2 = new Dimension(100, 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 name = new TTextField("Name");
private TTextField comment = new TTextField("Comment"); private TTextField comment = new TTextField("Comment");
private TTextField ticket = new TTextField("Ticket"); private TTextField ticket = new TTextField("Ticket");
@ -36,7 +37,7 @@ public class ActivityHeader extends JPanel {
public ActivityHeader() { public ActivityHeader() {
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
//add(sortkey); if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) add(sortkey);
add(name); add(name);
add(comment); add(comment);
add(ticket); add(ticket);
@ -48,7 +49,7 @@ public class ActivityHeader extends JPanel {
add(done); add(done);
add(todo); add(todo);
//sortkey.setPreferredSize(PREFERRED_SIZE1); sortkey.setPreferredSize(PREFERRED_SIZE1);
name.setPreferredSize(PREFERRED_SIZE); name.setPreferredSize(PREFERRED_SIZE);
comment.setPreferredSize(PREFERRED_SIZE); comment.setPreferredSize(PREFERRED_SIZE);
ticket.setPreferredSize(PREFERRED_SIZE1); ticket.setPreferredSize(PREFERRED_SIZE1);
@ -60,7 +61,7 @@ public class ActivityHeader extends JPanel {
done.setPreferredSize(PREFERRED_SIZE3); done.setPreferredSize(PREFERRED_SIZE3);
todo.setPreferredSize(PREFERRED_SIZE3); todo.setPreferredSize(PREFERRED_SIZE3);
//sortkey.setEditable(false); sortkey.setEditable(false);
name.setEditable(false); name.setEditable(false);
comment.setEditable(false); comment.setEditable(false);
ticket.setEditable(false); ticket.setEditable(false);
@ -72,7 +73,7 @@ public class ActivityHeader extends JPanel {
done.setEditable(false); done.setEditable(false);
todo.setEditable(false); todo.setEditable(false);
//sortkey.setFont(FONT); sortkey.setFont(FONT);
name.setFont(FONT); name.setFont(FONT);
comment.setFont(FONT); comment.setFont(FONT);
ticket.setFont(FONT); ticket.setFont(FONT);
@ -84,7 +85,7 @@ public class ActivityHeader extends JPanel {
done.setFont(FONT); done.setFont(FONT);
todo.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)); name.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
comment.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); comment.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
ticket.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)); done.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
todo.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); setAlignmentX(LEFT_ALIGNMENT);
//sortkey.setVisible(false); sortkey.setVisible(false);
} }
} }

View File

@ -1,5 +1,6 @@
package org.nanoboot.utils.timecalc.swing.common; 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.MouseClickedListener;
import org.nanoboot.utils.timecalc.swing.controls.SmallTButton; import org.nanoboot.utils.timecalc.swing.controls.SmallTButton;
import org.nanoboot.utils.timecalc.swing.controls.TTextField; import org.nanoboot.utils.timecalc.swing.controls.TTextField;
@ -97,7 +98,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
@Getter @Getter
private final Activity activity; private final Activity activity;
//private final TTextField sortkey; private final TTextField sortkey;
private final TTextField name; private final TTextField name;
private final TTextField comment; private final TTextField comment;
private final TTextField ticket; private final TTextField ticket;
@ -125,7 +126,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
{ {
this.subject = new TTextFieldForActivityPanel("", "subject"); this.subject = new TTextFieldForActivityPanel("", "subject");
this.totalComment = new TTextFieldForActivityPanel("", "totalComment"); 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.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.comment = new TTextFieldForActivityPanel("", "comment", (a, r)->{a.setComment(r);getTotalComment().setText(a.createTotalComment());}, false);
this.ticket = new TTextFieldForActivityPanel("", "ticket", this.ticket = new TTextFieldForActivityPanel("", "ticket",
@ -147,7 +148,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
} }
this.dayPanel = dayPanel; this.dayPanel = dayPanel;
//add(sortkey); if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) add(sortkey);
add(name); add(name);
add(comment); add(comment);
add(ticket); add(ticket);
@ -158,7 +159,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
add(totalComment); add(totalComment);
add(today); add(today);
add(remains); add(remains);
//sortkey.setVisible(false); sortkey.setVisible(false);
name.setHorizontalAlignment(JTextField.LEFT); name.setHorizontalAlignment(JTextField.LEFT);
comment.setHorizontalAlignment(JTextField.LEFT); comment.setHorizontalAlignment(JTextField.LEFT);
ticket.setHorizontalAlignment(JTextField.LEFT); ticket.setHorizontalAlignment(JTextField.LEFT);
@ -178,7 +179,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
moveThisButton.setFont(SwingUtils.SMALL_FONT); moveThisButton.setFont(SwingUtils.SMALL_FONT);
moveBeforeButton.setFont(SwingUtils.SMALL_FONT); moveBeforeButton.setFont(SwingUtils.SMALL_FONT);
//sortkey.setPreferredSize(PREFERRED_SIZE1); sortkey.setPreferredSize(PREFERRED_SIZE1);
name.setPreferredSize(PREFERRED_SIZE); name.setPreferredSize(PREFERRED_SIZE);
comment.setPreferredSize(PREFERRED_SIZE); comment.setPreferredSize(PREFERRED_SIZE);
ticket.setPreferredSize(PREFERRED_SIZE1); ticket.setPreferredSize(PREFERRED_SIZE1);
@ -196,7 +197,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
moveBeforeButton.setPreferredSize(PREFERRED_SIZE1); moveBeforeButton.setPreferredSize(PREFERRED_SIZE1);
this.setPreferredSize(new Dimension(getWidth(), 40)); this.setPreferredSize(new Dimension(getWidth(), 40));
//sortkey.setText(String.valueOf(activity.getSortkey())); sortkey.setText(String.valueOf(activity.getSortkey()));
name.setText(activity.getName()); name.setText(activity.getName());
comment.setText(activity.getComment()); comment.setText(activity.getComment());
ticket.setText(activity.getTicket()); ticket.setText(activity.getTicket());
@ -284,8 +285,8 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
ActivityPanel activityPanelForActivity = ActivityPanel activityPanelForActivity =
dayPanel.getActivityPanelForActivity(activityToBeMoved); dayPanel.getActivityPanelForActivity(activityToBeMoved);
activityPanelForActivity.getActivity().setSortkey(newSortKey); activityPanelForActivity.getActivity().setSortkey(newSortKey);
// activityPanelForActivity.getSortkeyTTextField().setText( activityPanelForActivity.getSortkeyTTextField().setText(
// String.valueOf(newSortKey)); String.valueOf(newSortKey));
activityRepository.update(activityToBeMoved); activityRepository.update(activityToBeMoved);
dayPanel.sortActivityPanels(); dayPanel.sortActivityPanels();
@ -297,7 +298,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
public int compareTo(ActivityPanel o) { public int compareTo(ActivityPanel o) {
return this.getActivity().compareTo(o.getActivity()); return this.getActivity().compareTo(o.getActivity());
} }
// public TTextField getSortkeyTTextField() { public TTextField getSortkeyTTextField() {
// return sortkey; return sortkey;
// } }
} }

View File

@ -1,6 +1,7 @@
package org.nanoboot.utils.timecalc.swing.common; package org.nanoboot.utils.timecalc.swing.common;
import lombok.Getter; import lombok.Getter;
import org.nanoboot.utils.timecalc.app.Main;
import org.nanoboot.utils.timecalc.app.TimeCalcConfiguration; import org.nanoboot.utils.timecalc.app.TimeCalcConfiguration;
import org.nanoboot.utils.timecalc.entity.Activity; import org.nanoboot.utils.timecalc.entity.Activity;
import org.nanoboot.utils.timecalc.persistence.api.ActivityRepositoryApi; import org.nanoboot.utils.timecalc.persistence.api.ActivityRepositoryApi;
@ -301,7 +302,7 @@ public class DayPanel extends JPanel {
sortkey = sortkey + sortkeySpace; sortkey = sortkey + sortkeySpace;
ap.getActivity().setSortkey(sortkey); ap.getActivity().setSortkey(sortkey);
activityRepository.update(ap.getActivity()); activityRepository.update(ap.getActivity());
// ap.getSortkeyTTextField().setText(String.valueOf(sortkey)); if(Main.ACTIVITIES_WINDOW_SHOW_SORTKEY) ap.getSortkeyTTextField().setText(String.valueOf(sortkey));
} }
} }

View File

@ -1,5 +1,6 @@
package org.nanoboot.utils.timecalc.swing.windows; 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.app.TimeCalcConfiguration;
import org.nanoboot.utils.timecalc.swing.controls.TWindow; import org.nanoboot.utils.timecalc.swing.controls.TWindow;
import org.nanoboot.utils.timecalc.swing.controls.TTabbedPane; 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.common.YearPanel;
import org.nanoboot.utils.timecalc.swing.progress.Time; import org.nanoboot.utils.timecalc.swing.progress.Time;
import static org.nanoboot.utils.timecalc.app.Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED;
/** /**
* @author Robert Vokac * @author Robert Vokac
* @since 16.02.2024 * @since 16.02.2024
@ -30,7 +33,7 @@ public class ActivitiesWindow extends TWindow {
public ActivitiesWindow(ActivityRepositoryApi activityRepositoryApiIn, Time time, TimeCalcConfiguration timeCalcConfiguration) { public ActivitiesWindow(ActivityRepositoryApi activityRepositoryApiIn, Time time, TimeCalcConfiguration timeCalcConfiguration) {
setSize(1600, 800); setSize(1600, 800);
setTitle("Activities"); setTitle(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED ? "Activity Report" : "Activities");
this.activityRepository = activityRepositoryApiIn; this.activityRepository = activityRepositoryApiIn;
this.years = new HashMap<>(); this.years = new HashMap<>();
@ -54,7 +57,20 @@ public class ActivitiesWindow extends TWindow {
JButton exitButton = new JButton("Exit"); JButton exitButton = new JButton("Exit");
exitButton.setBounds(SwingUtils.MARGIN + addYearButton.getWidth() + SwingUtils.MARGIN, addYearButton.getY(), 150, 30); exitButton.setBounds(SwingUtils.MARGIN + addYearButton.getWidth() + SwingUtils.MARGIN, addYearButton.getY(), 150, 30);
add(exitButton); 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); tp.setBounds(addYearButton.getX(), addYearButton.getY() + addYearButton.getHeight() + SwingUtils.MARGIN, 1500, 750);
yearsList.forEach(y -> { yearsList.forEach(y -> {

View File

@ -82,6 +82,8 @@ import javax.swing.Timer;
import org.nanoboot.utils.timecalc.swing.progress.ProgressDot; import org.nanoboot.utils.timecalc.swing.progress.ProgressDot;
import org.nanoboot.utils.timecalc.utils.property.ReadOnlyProperty; import org.nanoboot.utils.timecalc.utils.property.ReadOnlyProperty;
import static org.nanoboot.utils.timecalc.app.Main.ONLY_ACTIVITIES_WINDOW_IS_ALLOWED;
/** /**
* @author Robert Vokac * @author Robert Vokac
* @since 08.02.2024 * @since 08.02.2024
@ -688,7 +690,7 @@ public class MainWindow extends TWindow {
exitButton.getY() + exitButton.getHeight() + SwingUtils.MARGIN); exitButton.getY() + exitButton.getHeight() + SwingUtils.MARGIN);
setLayout(null); setLayout(null);
setVisible(true); setVisible(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED ? false : true);
setTitle(getWindowTitle()); setTitle(getWindowTitle());
@ -1105,6 +1107,9 @@ public class MainWindow extends TWindow {
} }
while (true) { while (true) {
if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) {
break;
}
if(allowOnlyBasicFeaturesProperty.getValue()) { if(allowOnlyBasicFeaturesProperty.getValue()) {
if(timeCalcConfiguration.batteryDayVisibleProperty.isDisabled()) { if(timeCalcConfiguration.batteryDayVisibleProperty.isDisabled()) {
@ -1169,7 +1174,7 @@ public class MainWindow extends TWindow {
workingDaysWindow.setVisible(false); workingDaysWindow.setVisible(false);
workingDaysWindow.dispose(); workingDaysWindow.dispose();
} }
if (activitiesWindow != null) { if (!ONLY_ACTIVITIES_WINDOW_IS_ALLOWED && activitiesWindow != null) {
activitiesWindow.setVisible(false); activitiesWindow.setVisible(false);
activitiesWindow.dispose(); activitiesWindow.dispose();
} }
@ -1181,6 +1186,10 @@ public class MainWindow extends TWindow {
//timeCalcConfiguration.saveToTimeCalcProperties(); //timeCalcConfiguration.saveToTimeCalcProperties();
setVisible(false); setVisible(false);
dispose(); dispose();
if(ONLY_ACTIVITIES_WINDOW_IS_ALLOWED) {
openActivitiesWindow();
}
} }
private final Set<Integer> alreadyShownPercents = new HashSet<>(); private final Set<Integer> alreadyShownPercents = new HashSet<>();