Browse Source

CHART-20229 图表控件修改

feature/10.0
白岳 3 years ago
parent
commit
39a0b0db0a
  1. 204
      designer-chart/src/main/java/com/fr/design/gui/xcombox/MarkerComboBox.java
  2. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/LineTypeComboBox.java

204
designer-chart/src/main/java/com/fr/design/gui/xcombox/MarkerComboBox.java

@ -8,110 +8,122 @@ import com.fr.base.GraphHelper;
import com.fr.base.ScreenResolution;
import com.fr.base.background.ColorBackground;
import com.fr.chart.chartglyph.Marker;
import com.fr.general.ComparatorUtils;
import com.fr.plugin.chart.ConfigHelper;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.i18n.Toolkit;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRFont;
import com.fr.plugin.chart.ConfigHelper;
import javax.swing.*;
import java.awt.*;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel;
import javax.swing.JList;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
/**
* Combobox for selecting marker.
*/
public class MarkerComboBox extends UIComboBox {
private static final double TEXT_X_COORDINATES = 12d;
/**
* Constructor.
*
* @param markerArray the array of marker.
*/
public MarkerComboBox(Marker[] markerArray) {
this.setModel(new DefaultComboBoxModel(markerArray));
this.setRenderer(new MarkerCellRenderer());
}
/**
* Get selected marker.
*/
public Marker getSelectedMarkder() {
return (Marker) getSelectedItem();
}
/**
* Set the selected marker.
*/
public void setSelectedMarker(Marker marker) {
setSelectedItem(marker);
}
/**
* CellRenderer.
*/
class MarkerCellRenderer extends UIComboBoxRenderer {
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
this.marker = (Marker) value;
this.isSelected = isSelected;
return this;
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
g2d.setColor(Color.black);
g2d.setFont(FRContext.getDefaultValues().getFRFont());
if (marker != null) {
boolean isAutoMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.AUTO_M);
boolean isNullMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.NULL_M);
if (isAutoMarker || isNullMarker) {
String text = isNullMarker
?Toolkit.i18nText("Fine-Design_Report_None")
:Toolkit.i18nText("Fine-Design_Basic_ChartF_Auto");
paintTextMarker(g2d, d, text);
} else {
if (marker.getBackground() == null) {
marker.setBackground(ColorBackground.getInstance(Color.black));
}
marker.paint(g2d, d.width / 2, d.height / 2);
}
}
if (isSelected) {
g2d.setColor(Color.blue);
GraphHelper.drawRect(g2d, 0, 0, d.width - 1, d.height - 1);
}
}
public Dimension getPreferredSize() {
return new Dimension(36, 16);
}
public Dimension getMinimumSize() {
return getPreferredSize();
}
private Marker marker = null;
private boolean isSelected = false;
private void paintTextMarker(Graphics2D g2d, Dimension d, String text) {
g2d.setColor(Color.black);
FRFont font = FRContext.getDefaultValues().getFRFont();
int resolution = ScreenResolution.getScreenResolution();
Font rfont = font.applyResolutionNP(resolution);
g2d.setFont(rfont);
FontMetrics fm = GraphHelper.getFontMetrics(rfont);
GraphHelper.drawString(g2d, text, TEXT_X_COORDINATES, (d.height - fm.getHeight()) / 2 + fm.getAscent());
}
}
private static final double TEXT_X_COORDINATES = 12d;
/**
* Constructor.
*
* @param markerArray the array of marker.
*/
public MarkerComboBox(Marker[] markerArray) {
this.setModel(new DefaultComboBoxModel(markerArray));
this.setRenderer(new MarkerCellRenderer());
}
/**
* Get selected marker.
*/
public Marker getSelectedMarkder() {
return (Marker) getSelectedItem();
}
/**
* Set the selected marker.
*/
public void setSelectedMarker(Marker marker) {
setSelectedItem(marker);
}
/**
* CellRenderer.
*/
class MarkerCellRenderer extends UIComboBoxRenderer {
private Marker marker = null;
private boolean isSelected = false;
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
this.marker = (Marker) value;
this.isSelected = isSelected;
String text = null;
if (marker != null) {
boolean isAutoMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.AUTO_M);
boolean isNullMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.NULL_M);
if (isAutoMarker || isNullMarker) {
text = isNullMarker
? Toolkit.i18nText("Fine-Design_Report_None")
: Toolkit.i18nText("Fine-Design_Basic_ChartF_Auto");
}
}
JLabel comp = (JLabel) super.getListCellRendererComponent(list, text, index, isSelected, cellHasFocus);
return comp;
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
if (marker != null) {
boolean isAutoMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.AUTO_M);
boolean isNullMarker = ComparatorUtils.equals(marker.getMarkerType(), ConfigHelper.NULL_M);
if (isAutoMarker || isNullMarker) {
super.paint(g);
} else {
g2d.setColor(Color.black);
if (marker.getBackground() == null) {
marker.setBackground(ColorBackground.getInstance(Color.black));
}
marker.paint(g2d, d.width / 2, d.height / 2);
}
}
if (isSelected) {
g2d.setColor(Color.blue);
GraphHelper.drawRect(g2d, 0, 0, d.width - 1, d.height - 1);
}
}
public Dimension getPreferredSize() {
return new Dimension(36, 16);
}
public Dimension getMinimumSize() {
return getPreferredSize();
}
private void paintTextMarker(Graphics2D g2d, Dimension d, String text) {
g2d.setColor(Color.black);
FRFont font = FRContext.getDefaultValues().getFRFont();
int resolution = ScreenResolution.getScreenResolution();
Font rfont = font.applyResolutionNP(resolution);
g2d.setFont(rfont);
FontMetrics fm = GraphHelper.getFontMetrics(rfont);
GraphHelper.drawString(g2d, text, TEXT_X_COORDINATES, (d.height - fm.getHeight()) / 2 + fm.getAscent());
}
}
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/LineTypeComboBox.java

@ -1,12 +1,9 @@
package com.fr.van.chart.designer.component;
import com.fr.base.FRContext;
import com.fr.base.GraphHelper;
import com.fr.base.ScreenResolution;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.i18n.Toolkit;
import com.fr.general.FRFont;
import com.fr.plugin.chart.type.LineType;
import com.fr.stable.Constants;
@ -14,8 +11,6 @@ import javax.swing.JLabel;
import javax.swing.JList;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
@ -37,9 +32,9 @@ public class LineTypeComboBox extends UIComboBox {
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel comp = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
this.lineType = (LineType) value;
comp.setText(null);
value = lineType == LineType.NONE ? Toolkit.i18nText("Fine-Design_Report_None") : null;
JLabel comp = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
return comp;
}
@ -51,14 +46,6 @@ public class LineTypeComboBox extends UIComboBox {
g2d.setColor(getForeground());
switch (this.lineType) {
case NONE:
FRFont font = FRContext.getDefaultValues().getFRFont();
int resolution = ScreenResolution.getScreenResolution();
Font rfont = font.applyResolutionNP(resolution);
g2d.setFont(rfont);
FontMetrics fm = GraphHelper.getFontMetrics(rfont);
GraphHelper.drawString(g2d, Toolkit.i18nText("Fine-Design_Report_None"), 4, (d.height - fm.getHeight()) / 2 + fm.getAscent());
break;
case SOLID:
GraphHelper.drawLine(g2d, 4, d.height / 2, d.width - 8, d.height / 2);
break;

Loading…
Cancel
Save