diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/BorderLineAndImagePane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/BorderLineAndImagePane.java index b25d66e30..0f2b853d1 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/BorderLineAndImagePane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/BorderLineAndImagePane.java @@ -98,13 +98,13 @@ public class BorderLineAndImagePane extends JPanel implements UIObserver { private int[] ninePoint = new int[] {-1, -1, -1, -1}; - public BorderLineAndImagePane() { - this.initComponents(); + public BorderLineAndImagePane(boolean supportBorderImage) { + this.initComponents(supportBorderImage); this.initLayout(); } - private void initComponents() { - borderLineCombo = new BorderLineAndImageComboBox(); + private void initComponents(boolean supportBorderImage) { + borderLineCombo = new BorderLineAndImageComboBox(supportBorderImage); borderColorPane = new NewColorSelectBox(145); imagePreviewPane = new ImagePreviewPane() {{ setImageStyle(Style.DEFAULT_STYLE); @@ -386,16 +386,25 @@ public class BorderLineAndImagePane extends JPanel implements UIObserver { protected static class BorderLineAndImageComboBox extends LineComboBox { public static final int LINE_PICTURE = -1; - public final static int[] BORDER_LINE_STYLE_ARRAY = new int[] { + public final static int[] BORDER_LINE_AND_IMAGE_STYLE_ARRAY = new int[] { Constants.LINE_NONE, LINE_PICTURE, Constants.LINE_THIN, //1px Constants.LINE_MEDIUM, //2px Constants.LINE_THICK, //3px }; + public final static int[] BORDER_LINE_STYLE_ARRAY = new int[] { + Constants.LINE_NONE, + Constants.LINE_THIN, //1px + Constants.LINE_MEDIUM, //2px + Constants.LINE_THICK, //3px + }; + + private boolean supportBorderImage = false; - public BorderLineAndImageComboBox() { - super(BORDER_LINE_STYLE_ARRAY); + public BorderLineAndImageComboBox(boolean supportBorderImage) { + super(supportBorderImage ? BORDER_LINE_AND_IMAGE_STYLE_ARRAY : BORDER_LINE_STYLE_ARRAY); + this.supportBorderImage = supportBorderImage; } @Override @@ -407,15 +416,27 @@ public class BorderLineAndImagePane extends JPanel implements UIObserver { } public boolean isSelectedBorderLine() { - return getSelectedIndex() > 1; + Object object = getSelectedItem(); + if (object != null) { + int value = (int) object; + return value > 0; + } + return false; } public boolean isSelectedBorderImage() { - return getSelectedIndex() == 1; + Object object = getSelectedItem(); + if (object != null) { + int value = (int) object; + return value == LINE_PICTURE; + } + return false; } public void selectBorderImage() { - this.setSelectedIndex(1); + if (supportBorderImage) { + this.setSelectedIndex(1); + } } } diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java index 7c2094dd7..95659df6b 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/LayoutStylePane.java @@ -88,7 +88,14 @@ public class LayoutStylePane extends BasicBeanPane { //标题背景透明度 protected UIPercentDragPane titleBackgroundOpacityPane; + private boolean supportBorderImage = false; + public LayoutStylePane() { + this(false); + } + + public LayoutStylePane(boolean supportBorderImage) { + this.supportBorderImage = supportBorderImage; this.initLayout(); } @@ -130,7 +137,7 @@ public class LayoutStylePane extends BasicBeanPane { protected JPanel createBackgroundStylePane() { borderStyleCombo = new UIComboBox(BORDER_STYLE); - borderLineAndImagePane = new BorderLineAndImagePane(); + borderLineAndImagePane = new BorderLineAndImagePane(this.supportBorderImage); cornerSpinner = new UISpinner(0,1000,1,0); double p = TableLayout.PREFERRED; diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java index 48d1028e6..3671259a2 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java @@ -35,7 +35,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; import java.awt.geom.RoundRectangle2D; /** @@ -96,14 +95,21 @@ public class TitleInsetImagePane extends JPanel implements UIObserver { imagePreviewPane.setBounds(0, 0, IMAGE_PREVIEW_SIZE, IMAGE_PREVIEW_SIZE); imagePreviewOverlayPane.setBounds(1, 1, IMAGE_PREVIEW_SIZE - 2, IMAGE_PREVIEW_SIZE - 2); imageDeleteButton.setBounds(IMAGE_PREVIEW_SIZE - DELETE_BUTTON_SIZE, 0, DELETE_BUTTON_SIZE, DELETE_BUTTON_SIZE); - deletableImagePreviewPane.add(imageDeleteButton, 0); - deletableImagePreviewPane.add(imagePreviewOverlayPane, 1); - deletableImagePreviewPane.add(imagePreviewPane, 2); + + JPanel mousePane = new JPanel(); + mousePane.setBounds(0, 0, IMAGE_PREVIEW_SIZE, IMAGE_PREVIEW_SIZE); + mousePane.setOpaque(false); + mousePane.setBackground(null); + + deletableImagePreviewPane.add(mousePane, 0); + deletableImagePreviewPane.add(imageDeleteButton, 1); + deletableImagePreviewPane.add(imagePreviewOverlayPane, 2); + deletableImagePreviewPane.add(imagePreviewPane, 3); imagePreviewOverlayPane.setVisible(false); imageDeleteButton.setVisible(false); imageDeleteButton.setEnabled(false); - deletableImagePreviewPane.addMouseListener(new MouseAdapter() { + mousePane.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { super.mouseEntered(e); @@ -115,12 +121,27 @@ public class TitleInsetImagePane extends JPanel implements UIObserver { @Override public void mouseExited(MouseEvent e) { super.mouseExited(e); + imagePreviewOverlayPane.setVisible(false); + imageDeleteButton.setVisible(false); + imageDeleteButton.setEnabled(false); + } + + @Override + public void mouseClicked(MouseEvent e) { + super.mouseClicked(e); int x = e.getX(); int y = e.getY(); - if (x <= 0 || getWidth() <= x || y <= 0 || y >= getHeight()) { + Rectangle bounds = imageDeleteButton.getBounds(); + if (bounds.x < x && x < bounds.x + bounds.width && bounds.y < y && y < bounds.y + bounds.height) { + imagePreviewPane.setImageWithSuffix(null); + imageLocationPane.setSelectedIndex(DEFAULT_INSET_LOCATION_INDEX); + imagePaddingPane.setValue(DEFAULT_INSET_PADDING); imagePreviewOverlayPane.setVisible(false); imageDeleteButton.setVisible(false); imageDeleteButton.setEnabled(false); + getComponent(1).setVisible(false); + + fireStateChanged(); } } }); @@ -211,20 +232,6 @@ public class TitleInsetImagePane extends JPanel implements UIObserver { }).dealWithImageFile(returnVal); } }); - this.imageDeleteButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - imagePreviewPane.setImageWithSuffix(null); - imageLocationPane.setSelectedIndex(DEFAULT_INSET_LOCATION_INDEX); - imagePaddingPane.setValue(DEFAULT_INSET_PADDING); - imagePreviewOverlayPane.setVisible(false); - imageDeleteButton.setVisible(false); - imageDeleteButton.setEnabled(false); - getComponent(1).setVisible(false); - - fireStateChanged(); - } - }); } public void populateBean(TitlePacker packer) { diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WTitleLayoutDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WTitleLayoutDefinePane.java index bae310fdb..004c3e2c6 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WTitleLayoutDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/WTitleLayoutDefinePane.java @@ -27,7 +27,7 @@ public abstract class WTitleLayoutDefinePane