Added several improvements, changes and bug fixes

This commit is contained in:
Robert Vokac 2024-03-10 18:38:57 +00:00
parent abc622290c
commit e381c215ff
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
5 changed files with 70 additions and 2 deletions

View File

@ -12,6 +12,7 @@ import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.nanoboot.utils.timecalc.utils.common.NumberFormats;
import org.nanoboot.utils.timecalc.utils.property.IntegerProperty;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
@ -33,10 +34,14 @@ public class ArrivalChart extends JPanel {
private static final Color BROWN = new Color(128, 0, 64);
private static final Color PURPLE = new Color(128, 0, 255);
public static final Rectangle EMPTY_RECTANGLE = new Rectangle();
public static final int MIN_CHART_WIDTH = 600;
private final boolean ma14Enabled;
private final boolean ma28Enabled;
private final boolean ma56Enabled;
public IntegerProperty widthProperty = new IntegerProperty("widthProperty", 600);
public IntegerProperty heightProperty = new IntegerProperty("heightProperty", 400);
public ArrivalChart(ArrivalChartData data, int width) {
this(data.getDays(), data.getArrival(), data.getTarget(), data.getMa7(),
data.getMa14(), data.getMa28(), data.getMa56(),
@ -66,10 +71,23 @@ public class ArrivalChart extends JPanel {
chartPanel.setDomainZoomable(true);
chartPanel.setMouseZoomable(true);
this.add(chartPanel);
widthProperty.addListener(e-> {
if (widthProperty.getValue() > MIN_CHART_WIDTH) {
chartPanel.setBounds(10, 10, widthProperty.getValue(),
heightProperty.getValue());
} else {widthProperty.setValue(MIN_CHART_WIDTH);}
});
heightProperty.addListener(e-> chartPanel.setBounds(10, 10, widthProperty.getValue(), heightProperty.getValue()));
widthProperty.setValue(width);
chartPanel.setBounds(10, 10, width, 400);
this.ma14Enabled = ma14Enabled;
this.ma28Enabled = ma28Enabled;
this.ma56Enabled = ma56Enabled;
}
private JFreeChart createChart(List<TimeSeries> timeSeries,

View File

@ -703,6 +703,7 @@ public class MainWindow extends TWindow {
System.out.println(wd);
while (true) {
if (updateWindow(timeCalcApp, time, clock, minuteBattery, hourBattery,
dayBattery,
weekBattery, monthBattery, yearBattery,

View File

@ -1,8 +1,13 @@
package org.nanoboot.utils.timecalc.swing.common;
import org.nanoboot.utils.timecalc.utils.property.IntegerProperty;
import javax.swing.JFrame;
import javax.swing.Timer;
import java.awt.Component;
import java.awt.HeadlessException;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
/**
* @author Robert Vokac
@ -10,8 +15,25 @@ import java.awt.HeadlessException;
*/
public class TWindow extends JFrame {
public IntegerProperty widthProperty = new IntegerProperty("widthProperty");
public IntegerProperty heightProperty = new IntegerProperty("heightProperty");
public TWindow() throws HeadlessException {
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
widthProperty.setValue(getWidth());
heightProperty.setValue(getHeight());
}
});
widthProperty.addListener(e -> {
if (widthProperty.getValue() > 100 /*&& widthProperty.getValue() % 10 == 0*/) {
setSize(widthProperty.getValue(), getHeight());
}
});
heightProperty.addListener(e -> {
if (heightProperty.getValue() > 100 /*&& widthProperty.getValue() % 10 == 0*/) {
setSize(getWidth(), heightProperty.getValue());
}
});
}
public Component[] addAll(Component... comp) {

View File

@ -8,6 +8,8 @@ import org.nanoboot.utils.timecalc.utils.common.DateFormats;
import org.nanoboot.utils.timecalc.utils.common.NumberFormats;
import org.nanoboot.utils.timecalc.utils.common.TTime;
import org.nanoboot.utils.timecalc.utils.common.Utils;
import org.nanoboot.utils.timecalc.utils.property.InvalidationListener;
import org.nanoboot.utils.timecalc.utils.property.Property;
import javax.swing.JButton;
import javax.swing.JComboBox;
@ -23,6 +25,7 @@ import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.function.Consumer;
/**
* @author Robert Vokac
@ -50,6 +53,7 @@ public class WorkingDaysWindow extends TWindow {
private JTable table = null;
private final JScrollPane scrollPane;
private int loadedYear;
private InvalidationListener invalidationChartWidthListener;
public WorkingDaysWindow(WorkingDayRepositoryApi workingDayRepository,
Time time, double target) {
@ -460,6 +464,15 @@ public class WorkingDaysWindow extends TWindow {
scrollPane.setViewportView(table);
table.setBounds(30, 30, 750, 600);
this.widthProperty.addListener(e-> {
if(/*this.widthProperty.getValue() % 10 == 0 && */this.widthProperty.getValue() > 100) {
scrollPane.setBounds(SwingUtils.MARGIN,
arrivalChart.getY() + arrivalChart.getHeight()
+ SwingUtils.MARGIN,
(this.widthProperty.getValue() - 50),
scrollPane.getHeight());
}
});
//table.setDefaultRenderer(Object.class, new ColorRenderer());
ArrivalChartData acd = WorkingDayForStats
.toArrivalChartData(wdfsList, 7d, startTextField.getText(),
@ -474,6 +487,18 @@ public class WorkingDaysWindow extends TWindow {
Rectangle bounds = this.arrivalChart.getBounds();
remove(this.arrivalChart);
this.arrivalChart = new ArrivalChart(newArrivalChartData, chartWidth);
if(this.invalidationChartWidthListener != null) {
this.widthProperty.removeListener(invalidationChartWidthListener);
this.invalidationChartWidthListener = null;
}
this.invalidationChartWidthListener =
new InvalidationListener() {
@Override
public void invalidated(Property property) {
arrivalChart.widthProperty.setValue(getWidth() - 30);
}
};
this.widthProperty.addListener(invalidationChartWidthListener);
add(arrivalChart);
arrivalChart.setBounds(bounds);
add(arrivalChart);

View File

@ -117,7 +117,9 @@ public class Property<T> {
public void addListener(ChangeListener<T> listener) {
this.changeListeners.add(listener);
}
public void removeListener(InvalidationListener listener) {
this.invalidationListeners.remove(listener);
}
public void removeListener(ChangeListener<T> listener) {
this.changeListeners.remove(listener);
}