diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIBasicButtonUI.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIBasicButtonUI.java index 185e4c18f..64db1e91d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIBasicButtonUI.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIBasicButtonUI.java @@ -321,9 +321,9 @@ public class UIBasicButtonUI extends MetalButtonUI { //harry: 画带有高光的按钮。 private void drawHighLightButton(Graphics2D g2, Color color1, Color color2, int w, int h) { - GradientPaint buttonPaint = new GradientPaint(0, 0, color1, 0, h - 1, color2); - GradientPaint buttonHighLightPaint = new GradientPaint(0, 0, new Color(1.0f, 1.0f, 1.0f, 0.6f), 0, h / 2, new Color(1.0f, 1.0f, 1.0f, 0.2f)); - GradientPaint buttonHighLightLinePaint = new GradientPaint(1, 1, new Color(1.0f, 1.0f, 1.0f, 0.8f), 0, h / 2, new Color(1.0f, 1.0f, 1.0f, 0.4f)); + GradientPaint buttonPaint = new GradientPaint(0, 0, color1, 0, h - 1f, color2); + GradientPaint buttonHighLightPaint = new GradientPaint(0, 0, new Color(1.0f, 1.0f, 1.0f, 0.6f), 0, h / 2f, new Color(1.0f, 1.0f, 1.0f, 0.2f)); + GradientPaint buttonHighLightLinePaint = new GradientPaint(1, 1, new Color(1.0f, 1.0f, 1.0f, 0.8f), 0, h / 2f, new Color(1.0f, 1.0f, 1.0f, 0.4f)); g2.setPaint(buttonPaint); g2.fillRoundRect(0, 0, w - 1, h - 1, 3, 3); g2.setPaint(buttonHighLightLinePaint);//按钮内侧高光线(内发光,0%阻塞) diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java index 078bf692b..32f20ad56 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java @@ -251,7 +251,7 @@ public class UIButton extends JButton implements UIObserver, UITextComponent { protected void paintOtherBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(borderStroke); - Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); + Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1f, getHeight() - 1f, UIConstants.ARC, UIConstants.ARC); g2d.setColor(borderColor); g2d.draw(shape); } diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButton.java index 21c5ee4b9..cc8aa9f63 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButton.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButton.java @@ -232,7 +232,7 @@ public class UISliderButton extends JButton implements UIObserver { protected void paintOtherBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(borderStroke); - Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); + Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1f, getHeight() - 1f, UIConstants.ARC, UIConstants.ARC); g2d.setColor(borderColor); g2d.draw(shape); } diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java index 6da878d8d..6a92f5057 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UISliderButtonUI.java @@ -176,7 +176,7 @@ public class UISliderButtonUI extends BasicButtonUI { private void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) { GradientPaint gp; if (DesignerMode.isAuthorityEditing() && isAuthorityEdited) { - gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE); + gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1f, UIConstants.AUTHORITY_DARK_BLUE); } else if (isPressedPainted) { gp = new GradientPaint(1, 1, UIConstants.SELECT_TAB, 1, height - 1, UIConstants.SELECT_TAB); }else{ diff --git a/designer-base/src/main/java/com/fr/design/layout/TableLayout.java b/designer-base/src/main/java/com/fr/design/layout/TableLayout.java index 3982e00bd..ab0bb5711 100644 --- a/designer-base/src/main/java/com/fr/design/layout/TableLayout.java +++ b/designer-base/src/main/java/com/fr/design/layout/TableLayout.java @@ -2,6 +2,8 @@ package com.fr.design.layout; import com.fr.stable.AssistUtils; +import com.fr.general.GeneralUtils; +import com.fr.stable.CommonUtils; import java.awt.Component; import java.awt.ComponentOrientation; import java.awt.Container; @@ -13,8 +15,6 @@ import java.lang.reflect.Method; import java.util.LinkedList; import java.util.ListIterator; -import com.fr.general.GeneralUtils; - /** *
TableLayout is a layout manager that is more powerful than GridBagLayout
@@ -854,9 +854,9 @@ public class TableLayout implements LayoutManager2, Serializable {
// Make sure row size is valid
if ((size < 0.0) &&
- (size != FILL) &&
- (size != PREFERRED) &&
- (size != MINIMUM)) {
+ (!CommonUtils.equals(size, FILL)) &&
+ (!CommonUtils.equals(size, PREFERRED)) &&
+ (!CommonUtils.equals(size, MINIMUM))) {
size = 0.0;
}
@@ -1178,7 +1178,7 @@ public class TableLayout implements LayoutManager2, Serializable {
int numCr = crSpec[z].length;
for (int counter = 0; counter < numCr; counter++)
- if ((crSpec[z][counter] >= 1.0) || (crSpec[z][counter] == 0.0)) {
+ if ((crSpec[z][counter] >= 1.0) || CommonUtils.equals(crSpec[z][counter], 0.0)) {
crSize[z][counter] = (int) (crSpec[z][counter] + 0.5);
availableSize -= crSize[z][counter];
}
@@ -1230,7 +1230,7 @@ public class TableLayout implements LayoutManager2, Serializable {
int numCr = crSpec[z].length;
for (int counter = 0; counter < numCr; counter++)
- if (crSpec[z][counter] == FILL)
+ if (CommonUtils.equals(crSpec[z][counter], FILL))
numFillSize++;
// If numFillSize is zero, the if statement below will always evaluate to
@@ -1242,7 +1242,7 @@ public class TableLayout implements LayoutManager2, Serializable {
// Assign "fill" cells equal amounts of the remaining space
for (int counter = 0; counter < numCr; counter++)
- if (crSpec[z][counter] == FILL) {
+ if (CommonUtils.equals(crSpec[z][counter], FILL)) {
crSize[z][counter] = availableSize / numFillSize;
slackSize -= crSize[z][counter];
}
@@ -1250,7 +1250,7 @@ public class TableLayout implements LayoutManager2, Serializable {
// Assign one pixel of slack to each FILL cr, starting at the last one,
// until all slack has been consumed
for (int counter = numCr - 1; (counter >= 0) && (slackSize > 0); counter--) {
- if (crSpec[z][counter] == FILL) {
+ if (CommonUtils.equals(crSpec[z][counter], FILL)) {
crSize[z][counter]++;
slackSize--;
}
@@ -1300,7 +1300,7 @@ public class TableLayout implements LayoutManager2, Serializable {
// Address every cr
for (int counter = 0; counter < numCr; counter++)
// Is the current cr a preferred/minimum (based on typeOfSize) size
- if (crSpec[z][counter] == typeOfSize) {
+ if (CommonUtils.equals(crSpec[z][counter], typeOfSize)) {
// Assume a maximum width of zero
int maxSize = 0;
@@ -1320,7 +1320,7 @@ public class TableLayout implements LayoutManager2, Serializable {
// the current component occupies
if ((entry.cr1[z] <= counter) && (entry.cr2[z] >= counter)) {
// Setup size and number of adjustable crs
- Dimension p = (typeOfSize == PREFERRED) ?
+ Dimension p = CommonUtils.equals(typeOfSize, PREFERRED) ?
entry.component.getPreferredSize() :
entry.component.getMinimumSize();
@@ -1329,23 +1329,23 @@ public class TableLayout implements LayoutManager2, Serializable {
int numAdjustable = 0;
// Calculate for preferred size
- if (typeOfSize == PREFERRED)
+ if (CommonUtils.equals(typeOfSize, PREFERRED))
// Consider all crs this component occupies
for (int entryCr = entry.cr1[z];
entryCr <= entry.cr2[z]; entryCr++) {
// Subtract absolute, relative, and minumum cr
// sizes, which have already been calculated
if ((crSpec[z][entryCr] >= 0.0) ||
- (crSpec[z][entryCr] == MINIMUM)) {
+ CommonUtils.equals(crSpec[z][entryCr], MINIMUM)) {
size -= crSize[z][entryCr];
}
// Count preferred/min width columns
- else if (crSpec[z][entryCr] == PREFERRED)
+ else if (CommonUtils.equals(crSpec[z][entryCr], PREFERRED))
numAdjustable++;
- // Skip any component that occupies a fill cr
- // because the fill should fulfill the size
- // requirements
- else if (crSpec[z][entryCr] == FILL)
+ // Skip any component that occupies a fill cr
+ // because the fill should fulfill the size
+ // requirements
+ else if (CommonUtils.equals(crSpec[z][entryCr], FILL))
continue nextComponent;
}
// Calculate for minimum size
@@ -1358,14 +1358,14 @@ public class TableLayout implements LayoutManager2, Serializable {
if (crSpec[z][entryCr] >= 0.0)
size -= crSize[z][entryCr];
// Count preferred/min width columns
- else if ((crSpec[z][entryCr] == PREFERRED) ||
- (crSpec[z][entryCr] == MINIMUM)) {
+ else if (CommonUtils.equals(crSpec[z][entryCr], PREFERRED) ||
+ CommonUtils.equals(crSpec[z][entryCr], MINIMUM)) {
numAdjustable++;
}
// Skip any component that occupies a fill cr
// because the fill should fulfill the size
// requirements
- else if (crSpec[z][entryCr] == FILL)
+ else if (CommonUtils.equals(crSpec[z][entryCr], FILL))
continue nextComponent;
}
@@ -1693,7 +1693,7 @@ public class TableLayout implements LayoutManager2, Serializable {
Dimension prefMinSize[] = new Dimension[numEntry];
for (int i = 0; i < numEntry; i++)
- prefMinSize[i] = (typeOfSize == PREFERRED) ?
+ prefMinSize[i] = CommonUtils.equals(typeOfSize, PREFERRED) ?
entryList[i].component.getPreferredSize() :
entryList[i].component.getMinimumSize();
diff --git a/designer-chart/src/main/java/com/fr/design/chartx/StructureChartDataPane.java b/designer-chart/src/main/java/com/fr/design/chartx/StructureChartDataPane.java
new file mode 100644
index 000000000..31737559c
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/design/chartx/StructureChartDataPane.java
@@ -0,0 +1,23 @@
+package com.fr.design.chartx;
+
+import com.fr.design.chartx.fields.diff.StructureCellDataFieldsPane;
+import com.fr.design.chartx.fields.diff.StructureDataSetFieldsPane;
+import com.fr.design.chartx.single.SingleDataPane;
+import com.fr.design.gui.frpane.AttributeChangeListener;
+
+/**
+ * @author Bjorn
+ * @version 10.0
+ * Created by Bjorn on 2019-09-02
+ */
+public class StructureChartDataPane extends MultiCategoryChartDataPane {
+
+ public StructureChartDataPane(AttributeChangeListener listener) {
+ super(listener);
+ }
+
+ @Override
+ protected SingleDataPane createSingleDataPane() {
+ return new SingleDataPane(new StructureDataSetFieldsPane(), new StructureCellDataFieldsPane());
+ }
+}
diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/StructureCellDataFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/StructureCellDataFieldsPane.java
new file mode 100644
index 000000000..87ff4d395
--- /dev/null
+++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/StructureCellDataFieldsPane.java
@@ -0,0 +1,86 @@
+package com.fr.design.chartx.fields.diff;
+
+import com.fr.chartx.data.field.diff.StructureColumnFieldCollection;
+import com.fr.design.chartx.fields.AbstractCellDataFieldsPane;
+import com.fr.design.formula.TinyFormulaPane;
+import com.fr.design.gui.itextfield.UITextField;
+import com.fr.design.i18n.Toolkit;
+
+import java.awt.Component;
+
+/**
+ * @author Bjorn
+ * @version 10.0
+ * Created by Bjorn on 2019-09-02
+ */
+public class StructureCellDataFieldsPane extends AbstractCellDataFieldsPane