Improved ProgressCircle

This commit is contained in:
Robert Vokac 2024-04-18 17:34:27 +02:00
parent 39ee336b4e
commit 32d122c351
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
6 changed files with 38 additions and 6 deletions

View File

@ -211,6 +211,11 @@ public class TimeCalcConfiguration {
= new BooleanProperty(TimeCalcProperty.CIRCLE_HIDDEN.getKey()); = new BooleanProperty(TimeCalcProperty.CIRCLE_HIDDEN.getKey());
public final StringProperty circleTypeProperty public final StringProperty circleTypeProperty
= new StringProperty(TimeCalcProperty.CIRCLE_TYPE.getKey()); = new StringProperty(TimeCalcProperty.CIRCLE_TYPE.getKey());
public final BooleanProperty circleInnerCircleVisibleProperty
= new BooleanProperty(TimeCalcProperty.CIRCLE_INNER_CIRCLE_VISIBLE.getKey());
public final BooleanProperty circleOuterCircleOnlyBorderProperty
= new BooleanProperty(TimeCalcProperty.CIRCLE_OUTER_CIRCLE_ONLY_BORDER.getKey());
//
public final BooleanProperty walkingHumanVisibleProperty public final BooleanProperty walkingHumanVisibleProperty
= new BooleanProperty( = new BooleanProperty(
TimeCalcProperty.WALKING_HUMAN_VISIBLE.getKey()); TimeCalcProperty.WALKING_HUMAN_VISIBLE.getKey());
@ -335,7 +340,7 @@ public class TimeCalcConfiguration {
smileysVisibleOnlyIfMouseMovingOverProperty, smileysVisibleOnlyIfMouseMovingOverProperty,
smileysColoredProperty, smileysColoredProperty,
squareVisibleProperty,squareTypeProperty, squareVisibleProperty,squareTypeProperty,
circleVisibleProperty,circleTypeProperty, circleVisibleProperty,circleTypeProperty,circleInnerCircleVisibleProperty,circleOuterCircleOnlyBorderProperty,
dotVisibleProperty,dotTypeProperty, dotVisibleProperty,dotTypeProperty,
fuelVisibleProperty, fuelTypeProperty, fuelHiddenProperty, fuelVisibleProperty, fuelTypeProperty, fuelHiddenProperty,
fuelIconVisibleProperty, fuelIconVisibleProperty,

View File

@ -102,6 +102,9 @@ public enum TimeCalcProperty {
CIRCLE_VISIBLE("circle.visible", "Circle"), CIRCLE_VISIBLE("circle.visible", "Circle"),
CIRCLE_TYPE("circle.type", "Circle : Type"), CIRCLE_TYPE("circle.type", "Circle : Type"),
CIRCLE_HIDDEN("circle.hidden", "Circle : Hidden"), CIRCLE_HIDDEN("circle.hidden", "Circle : Hidden"),
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"),
//
WALKING_HUMAN_VISIBLE("walking-human.visible", "Walking Human"), WALKING_HUMAN_VISIBLE("walking-human.visible", "Walking Human"),
WALKING_HUMAN_TYPE("walking-human.type", "Walking Human : Type"), WALKING_HUMAN_TYPE("walking-human.type", "Walking Human : Type"),
WALKING_HUMAN_HIDDEN("walking-human.hidden", "Walking Human : Hidden"), WALKING_HUMAN_HIDDEN("walking-human.hidden", "Walking Human : Hidden"),

View File

@ -2,8 +2,11 @@ package org.nanoboot.utils.timecalc.swing.progress;
import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.entity.Visibility;
import org.nanoboot.utils.timecalc.swing.common.Widget; 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.common.NumberFormats;
import org.nanoboot.utils.timecalc.utils.property.BooleanProperty;
import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;
@ -12,6 +15,9 @@ import java.awt.RenderingHints;
public class ProgressCircle extends Widget { public class ProgressCircle extends Widget {
public BooleanProperty innerCircleVisibleProperty = new BooleanProperty("innerCircleVisibleProperty", true);
public BooleanProperty outerCircleOnlyBorderProperty = new BooleanProperty("outerCircleOnlyBorderProperty", true);
public ProgressCircle() { public ProgressCircle() {
setPreferredSize(new Dimension(200, 200)); setPreferredSize(new Dimension(200, 200));
} }
@ -25,7 +31,8 @@ public class ProgressCircle extends Widget {
= Visibility.valueOf(visibilityProperty.getValue()); = Visibility.valueOf(visibilityProperty.getValue());
Graphics2D brush = (Graphics2D) g; Graphics2D brush = (Graphics2D) g;
brush.setColor( brush.setColor(
visibility.isStronglyColored() || mouseOver ? Color.darkGray visibility.isStronglyColored() || mouseOver ?
Battery.getColourForProgress(donePercent(), visibility, mouseOver)/*Color.darkGray*/
: FOREGROUND_COLOR); : FOREGROUND_COLOR);
brush.setRenderingHint(RenderingHints.KEY_ANTIALIASING, brush.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON); RenderingHints.VALUE_ANTIALIAS_ON);
@ -34,12 +41,19 @@ public class ProgressCircle extends Widget {
double angleDouble2 = (angleDouble - (int) (angleDouble)) * 360; double angleDouble2 = (angleDouble - (int) (angleDouble)) * 360;
// System.out.println("remainingAngle=" + angleDouble2); // System.out.println("remainingAngle=" + angleDouble2);
brush.fillArc(0, 0, side, side, 90, -(int) angleDouble); if(outerCircleOnlyBorderProperty.isEnabled()) {
brush.setStroke(new BasicStroke(8f));
brush.drawArc(8, 8, side - 16, side - 16, 90, -(int) angleDouble);
} else {
brush.fillArc(8, 8, side - 16, side - 16, 90, -(int) angleDouble);
}
int side2 = side / 2; int side2 = side / 2;
brush.setColor(visibility.isStronglyColored() || mouseOver brush.setColor(visibility.isStronglyColored() || mouseOver
? new Color(105, 175, 236) : FOREGROUND_COLOR2); ? new Color(105, 175, 236) : FOREGROUND_COLOR2);
brush.fillArc(0 + (side2 / 2), 0 + (side2 / 2), side2, side2, 90, if(innerCircleVisibleProperty.isEnabled()) {
-(int) angleDouble2); brush.fillArc(0 + (side2 / 2), 0 + (side2 / 2), side2, side2, 90,
-(int) angleDouble2);
}
brush.setColor(visibility.isStronglyColored() || mouseOver ? Color.blue brush.setColor(visibility.isStronglyColored() || mouseOver ? Color.blue
: FOREGROUND_COLOR); : FOREGROUND_COLOR);

View File

@ -196,6 +196,10 @@ public class ConfigWindow extends TWindow {
= new JCheckBox(TimeCalcProperty.CIRCLE_VISIBLE.getKey()); = new JCheckBox(TimeCalcProperty.CIRCLE_VISIBLE.getKey());
private final JTextField circleTypeProperty private final JTextField circleTypeProperty
= new JTextField(TimeCalcProperty.CIRCLE_TYPE.getKey()); = new JTextField(TimeCalcProperty.CIRCLE_TYPE.getKey());
private final JCheckBox circleInnerCircleVisibleProperty
= new JCheckBox(TimeCalcProperty.CIRCLE_INNER_CIRCLE_VISIBLE.getKey());
private final JCheckBox circleOuterCircleVisibleProperty
= new JCheckBox(TimeCalcProperty.CIRCLE_OUTER_CIRCLE_ONLY_BORDER.getKey());
private final JCheckBox swingVisibleProperty private final JCheckBox swingVisibleProperty
= new JCheckBox(TimeCalcProperty.SWING_VISIBLE.getKey()); = new JCheckBox(TimeCalcProperty.SWING_VISIBLE.getKey());
private final JTextField swingTypeProperty private final JTextField swingTypeProperty
@ -469,6 +473,8 @@ public class ConfigWindow extends TWindow {
} }
weatherVisibleProperty.setSelected(enable); weatherVisibleProperty.setSelected(enable);
circleVisibleProperty.setSelected(enable); circleVisibleProperty.setSelected(enable);
circleInnerCircleVisibleProperty.setSelected(enable);
circleOuterCircleVisibleProperty.setSelected(!enable);
swingVisibleProperty.setSelected(enable); swingVisibleProperty.setSelected(enable);
swingQuarterIconVisibleProperty.setSelected(enable); swingQuarterIconVisibleProperty.setSelected(enable);
walkingHumanVisibleProperty.setSelected(enable); walkingHumanVisibleProperty.setSelected(enable);
@ -559,7 +565,7 @@ public class ConfigWindow extends TWindow {
commandsVisibleProperty, commandsVisibleProperty,
notificationsVisibleProperty, notificationsVisibleProperty,
squareVisibleProperty,squareHiddenProperty,squareTypeProperty, squareVisibleProperty,squareHiddenProperty,squareTypeProperty,
circleVisibleProperty,circleHiddenProperty,circleTypeProperty, circleVisibleProperty,circleHiddenProperty,circleTypeProperty,circleInnerCircleVisibleProperty,circleOuterCircleVisibleProperty,
dotVisibleProperty,dotHiddenProperty,dotTypeProperty, dotVisibleProperty,dotHiddenProperty,dotTypeProperty,
fuelVisibleProperty,fuelTypeProperty,fuelHiddenProperty,fuelIconVisibleProperty, fuelVisibleProperty,fuelTypeProperty,fuelHiddenProperty,fuelIconVisibleProperty,
rotationVisibleProperty, rotationTypeProperty, rotationHiddenProperty, rotationVisibleProperty, rotationTypeProperty, rotationHiddenProperty,

View File

@ -461,6 +461,8 @@ public class MainWindow extends TWindow {
.bindTo(timeCalcConfiguration.dotVisibleProperty); .bindTo(timeCalcConfiguration.dotVisibleProperty);
progressCircle.typeProperty progressCircle.typeProperty
.bindTo(timeCalcConfiguration.circleTypeProperty); .bindTo(timeCalcConfiguration.circleTypeProperty);
progressCircle.innerCircleVisibleProperty.bindTo(timeCalcConfiguration.circleInnerCircleVisibleProperty);
progressCircle.outerCircleOnlyBorderProperty.bindTo(timeCalcConfiguration.circleOuterCircleOnlyBorderProperty);
walkingHumanProgress.typeProperty walkingHumanProgress.typeProperty
.bindTo(timeCalcConfiguration.walkingHumanTypeProperty); .bindTo(timeCalcConfiguration.walkingHumanTypeProperty);
progressSwing.typeProperty progressSwing.typeProperty

View File

@ -58,6 +58,8 @@ square.hidden=false
circle.visible=true circle.visible=true
circle.type=day circle.type=day
circle.hidden=false circle.hidden=false
circle.inner-circle.visible=true
circle.outer-circle.only-border=false
dot.visible=true dot.visible=true
dot.type=day dot.type=day
dot.hidden=false dot.hidden=false