diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java index b361819..0a241c8 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java @@ -216,6 +216,15 @@ public class TimeCalcConfiguration { public final BooleanProperty circleOuterCircleOnlyBorderProperty = new BooleanProperty(TimeCalcProperty.CIRCLE_OUTER_CIRCLE_ONLY_BORDER.getKey()); // + public final BooleanProperty barVisibleProperty + = new BooleanProperty(TimeCalcProperty.BAR_VISIBLE.getKey()); + public final BooleanProperty barHiddenProperty + = new BooleanProperty(TimeCalcProperty.BAR_HIDDEN.getKey()); + public final StringProperty barTypeProperty + = new StringProperty(TimeCalcProperty.BAR_TYPE.getKey()); + public final IntegerProperty barHeightProperty + = new IntegerProperty(TimeCalcProperty.BAR_HEIGHT.getKey()); + // public final BooleanProperty walkingHumanVisibleProperty = new BooleanProperty( TimeCalcProperty.WALKING_HUMAN_VISIBLE.getKey()); @@ -341,6 +350,7 @@ public class TimeCalcConfiguration { smileysColoredProperty, squareVisibleProperty,squareTypeProperty, circleVisibleProperty,circleTypeProperty,circleInnerCircleVisibleProperty,circleOuterCircleOnlyBorderProperty, + barVisibleProperty, barTypeProperty, barHiddenProperty, barHeightProperty, dotVisibleProperty,dotTypeProperty, fuelVisibleProperty, fuelTypeProperty, fuelHiddenProperty, fuelIconVisibleProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java index d9dd426..2444342 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java @@ -105,6 +105,11 @@ public enum TimeCalcProperty { CIRCLE_INNER_CIRCLE_VISIBLE("circle.inner-circle.visible", "Circle : Inner circle"), CIRCLE_OUTER_CIRCLE_ONLY_BORDER("circle.outer-circle.only-border", "Circle : Outer circle : Only border"), // + BAR_VISIBLE("bar.visible", "Bar"), + BAR_TYPE("bar.type", "Bar : Type"), + BAR_HIDDEN("bar.hidden", "Bar : Hidden"), + BAR_HEIGHT("bar.height", "Bar : Height", Integer.class), + // WALKING_HUMAN_VISIBLE("walking-human.visible", "Walking Human"), WALKING_HUMAN_TYPE("walking-human.type", "Walking Human : Type"), WALKING_HUMAN_HIDDEN("walking-human.hidden", "Walking Human : Hidden"), diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java index 05f1b41..35ad36c 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java @@ -306,16 +306,21 @@ public class Widget extends JPanel implements } int row = 10; int x = (int)(getWidth() > 100 ? (int) (getWidth() * 0.4) : (int) (getWidth() * 0.1)); - brush.drawString("Show", x, row); - row = row + 20; - String[] nameArray = getHumanName().split(" "); - for(int i = 0; i< nameArray.length; i++) { - brush.drawString( - nameArray[i], - x - , row); - row = row + 12; + if(getHeight() <= 50) { + brush.drawString("Show" + ' ' + getHumanName(), x, row); + } else { + brush.drawString("Show", x, row); + row = row + 20; + String[] nameArray = getHumanName().split(" "); + for(int i = 0; i< nameArray.length; i++) { + brush.drawString( + nameArray[i], + x + , row); + row = row + 12; + } } + } //nothing to do diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressBar.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressBar.java new file mode 100644 index 0000000..99e0d38 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressBar.java @@ -0,0 +1,61 @@ +package org.nanoboot.utils.timecalc.swing.progress; + +import org.nanoboot.utils.timecalc.entity.Visibility; +import org.nanoboot.utils.timecalc.swing.common.Widget; +import org.nanoboot.utils.timecalc.swing.progress.battery.Battery; +import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.property.BooleanProperty; +import org.nanoboot.utils.timecalc.utils.property.IntegerProperty; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +public class ProgressBar extends Widget { + + public IntegerProperty heightProperty = new IntegerProperty("heightProperty", 50); + public ProgressBar() { + setPreferredSize(new Dimension(600, 50)); + } + + @Override + public void paintWidget(Graphics g) { + Visibility visibility + = Visibility.valueOf(visibilityProperty.getValue()); + Graphics2D brush = (Graphics2D) g; + brush.setColor( + visibility.isStronglyColored() || mouseOver ? + Battery.getColourForProgress(donePercent(), visibility, mouseOver)/*Color.darkGray*/ + : FOREGROUND_COLOR); + brush.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + int progressWidth = (int) (getWidth() * donePercent()); + int remainsWidth = getWidth() - progressWidth; + + brush.setColor( + visibility.isStronglyColored() || mouseOver ? + Color.WHITE + : BACKGROUND_COLOR); + int h = heightProperty.getValue() > getHeight() ? getHeight() : + heightProperty.getValue(); + if(h < 1) {h = 1;} + brush.fillRect(0, 0, getWidth(), h); + brush.setColor( + visibility.isStronglyColored() || mouseOver ? + Battery.getColourForProgress(donePercent(), visibility, mouseOver)/*Color.darkGray*/ + : FOREGROUND_COLOR); + brush.fillRect(0, 0, progressWidth, h); + brush.setColor(h <= 15 || progressWidth < 40 ? (visibility.isStronglyColored() ? Color.BLACK : Color.GRAY) : Color.WHITE); + brush.drawString( + NumberFormats.FORMATTER_ONE_DECIMAL_PLACE + .format(donePercent() * 100) + "%", + progressWidth < 40 ? 40 : progressWidth - 40, + h <= 15 ? h + 15 : 15); + + + } + +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java index c720417..019d0ae 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java @@ -200,6 +200,16 @@ public class ConfigWindow extends TWindow { = new JCheckBox(TimeCalcProperty.CIRCLE_INNER_CIRCLE_VISIBLE.getKey()); private final JCheckBox circleOuterCircleVisibleProperty = new JCheckBox(TimeCalcProperty.CIRCLE_OUTER_CIRCLE_ONLY_BORDER.getKey()); + // + private final JCheckBox barVisibleProperty + = new JCheckBox(TimeCalcProperty.BAR_VISIBLE.getKey()); + private final JTextField barTypeProperty + = new JTextField(TimeCalcProperty.BAR_TYPE.getKey()); + private final JCheckBox barHiddenProperty + = new JCheckBox(TimeCalcProperty.BAR_HIDDEN.getKey()); + private final JTextField barHeightProperty + = new JTextField(TimeCalcProperty.BAR_HEIGHT.getKey()); + // private final JCheckBox swingVisibleProperty = new JCheckBox(TimeCalcProperty.SWING_VISIBLE.getKey()); private final JTextField swingTypeProperty @@ -475,6 +485,9 @@ public class ConfigWindow extends TWindow { circleVisibleProperty.setSelected(enable); circleInnerCircleVisibleProperty.setSelected(enable); circleOuterCircleVisibleProperty.setSelected(!enable); + // + barVisibleProperty.setSelected(enable); + barHeightProperty.setText("50"); swingVisibleProperty.setSelected(enable); swingQuarterIconVisibleProperty.setSelected(enable); walkingHumanVisibleProperty.setSelected(enable); @@ -566,6 +579,7 @@ public class ConfigWindow extends TWindow { notificationsVisibleProperty, squareVisibleProperty,squareHiddenProperty,squareTypeProperty, circleVisibleProperty,circleHiddenProperty,circleTypeProperty,circleInnerCircleVisibleProperty,circleOuterCircleVisibleProperty, + barVisibleProperty, barHiddenProperty, barTypeProperty, barHeightProperty, dotVisibleProperty,dotHiddenProperty,dotTypeProperty, fuelVisibleProperty,fuelTypeProperty,fuelHiddenProperty,fuelIconVisibleProperty, rotationVisibleProperty, rotationTypeProperty, rotationHiddenProperty, @@ -985,7 +999,7 @@ public class ConfigWindow extends TWindow { index = 5; } - if (key.startsWith("square.")||key.startsWith("circle.")||key.startsWith("dot.")||key.startsWith("swing.")||key.startsWith("walking-human.") || key.startsWith("fuel.") || key.startsWith("rotation.")) { + if (key.startsWith("square.")||key.startsWith("circle.")||key.startsWith("dot.")||key.startsWith("swing.")||key.startsWith("walking-human.") || key.startsWith("fuel.") || key.startsWith("rotation.") || key.startsWith("bar.")) { index = 6; } 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 ddad638..afc9e64 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 @@ -27,6 +27,7 @@ import org.nanoboot.utils.timecalc.swing.controls.TLabel; import org.nanoboot.utils.timecalc.swing.controls.TTextField; import org.nanoboot.utils.timecalc.swing.controls.TWindow; import org.nanoboot.utils.timecalc.swing.progress.AnalogClock; +import org.nanoboot.utils.timecalc.swing.progress.ProgressBar; import org.nanoboot.utils.timecalc.swing.progress.ProgressRotation; import org.nanoboot.utils.timecalc.swing.progress.battery.Battery; import org.nanoboot.utils.timecalc.swing.progress.battery.DayBattery; @@ -122,6 +123,7 @@ public class MainWindow extends TWindow { private final ProgressWeather progressWeather; private final ProgressFuelGauge progressFuelGauge; private final ProgressRotation progressRotation; + private final ProgressBar progressBar; private HelpWindow helpWindow = null; private ConfigWindow configWindow = null; private ActivitiesWindow activitiesWindow = null; @@ -451,6 +453,21 @@ public class MainWindow extends TWindow { add(progressRotation); // + this.progressBar = new ProgressBar(); + progressBar.setBounds(progressSwing.getX(), progressSwing.getY() + progressSwing.getHeight() + SwingUtils.MARGIN, + progressRotation.getX() + progressRotation.getWidth() - 2 * SwingUtils.MARGIN, 50); + + progressBar.visibleProperty + .bindTo(timeCalcConfiguration.barVisibleProperty); + progressBar.typeProperty + .bindTo(timeCalcConfiguration.barTypeProperty); + progressBar.hiddenProperty + .bindTo(timeCalcConfiguration.barHiddenProperty); + progressBar.heightProperty + .bindTo(timeCalcConfiguration.barHeightProperty); + + add(progressBar); + // { progressSquare.typeProperty @@ -499,7 +516,7 @@ public class MainWindow extends TWindow { progressWeather.hiddenProperty.bindTo(timeCalcConfiguration.weatherHiddenProperty); } TLabel arrivalTextFieldLabel = new TLabel("Arrival:", 70); - arrivalTextFieldLabel.setBoundsFromTop(progressSwing, 3); + arrivalTextFieldLabel.setBoundsFromTop(progressBar, 3); arrivalTextField.setBoundsFromLeft(arrivalTextFieldLabel); TButton arrivalIncreaseButton = new SmallTButton('+'); @@ -1089,7 +1106,7 @@ public class MainWindow extends TWindow { long diff = now - Files.getLastModifiedTime(file.toPath()).toMillis(); int fileAgeInDays = (int) (diff / 1000 / 60 / 60 / 24); System.out.println("Found backup file " + file.getName() + " with age: " + fileAgeInDays); - if (fileAgeInDays > 14) { + if (fileAgeInDays > 28) { file.delete(); } @@ -1329,6 +1346,7 @@ public class MainWindow extends TWindow { progressDot.setProgress(progress); progressFuelGauge.setProgress(progress); progressRotation.setProgress(progress); + progressBar.setProgress(progress); dayBattery.setProgress(progress); monthBattery.setProgress(progress); diff --git a/modules/time-calc-app/src/main/resources/timecalc-default.conf b/modules/time-calc-app/src/main/resources/timecalc-default.conf index a8319f3..6741149 100644 --- a/modules/time-calc-app/src/main/resources/timecalc-default.conf +++ b/modules/time-calc-app/src/main/resources/timecalc-default.conf @@ -60,6 +60,10 @@ circle.type=day circle.hidden=false circle.inner-circle.visible=true circle.outer-circle.only-border=false +bar.visible=true +bar.type=day +bar.hidden=false +bar.height=20 dot.visible=true dot.type=day dot.hidden=false