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 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<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 {
// 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);
}
}

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.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;
}
}
}

View File

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

View File

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

View File

@ -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<ActivityPanel> {
@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<ActivityPanel> {
{
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<ActivityPanel> {
}
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<ActivityPanel> {
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<ActivityPanel> {
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<ActivityPanel> {
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> {
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<ActivityPanel> {
public int compareTo(ActivityPanel o) {
return this.getActivity().compareTo(o.getActivity());
}
// public TTextField getSortkeyTTextField() {
// return sortkey;
// }
public TTextField getSortkeyTTextField() {
return sortkey;
}
}

View File

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

View File

@ -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 -> {

View File

@ -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<Integer> alreadyShownPercents = new HashSet<>();