zack 9 years ago
parent
commit
a99dfb9eae
  1. 3
      designer/src/com/fr/design/webattr/ReportWebAttrPane.java
  2. 44
      designer_base/src/com/fr/design/ExtraDesignClassManager.java
  3. 22
      designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java
  4. 34
      designer_base/src/com/fr/design/fun/BackgroundUIProvider.java
  5. 20
      designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java
  6. 20
      designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java
  7. 25
      designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java
  8. 75
      designer_base/src/com/fr/design/gui/style/BackgroundPane.java
  9. 28
      designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java
  10. 2
      designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java
  11. 4
      designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java
  12. 11
      designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java
  13. 8
      designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java
  14. 2
      designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java
  15. 14
      designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java
  16. 10
      designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java
  17. 6
      designer_base/src/com/fr/design/style/AbstractPopBox.java
  18. 18
      designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java
  19. 121
      designer_base/src/com/fr/design/style/background/BackgroundFactory.java
  20. 893
      designer_base/src/com/fr/design/style/background/BackgroundPane.java
  21. 47
      designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java
  22. 5
      designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java
  23. 49
      designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java
  24. 6
      designer_base/src/com/fr/design/style/background/gradient/GradientBackgroundPane.java
  25. 46
      designer_base/src/com/fr/design/style/background/impl/BPane.java
  26. 42
      designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java
  27. 230
      designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java
  28. 25
      designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java
  29. 39
      designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java
  30. 208
      designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java
  31. 24
      designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java
  32. 197
      designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java
  33. 6
      designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java
  34. 6
      designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java
  35. 36
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java
  36. 12
      designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java
  37. 22
      designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java

3
designer/src/com/fr/design/webattr/ReportWebAttrPane.java

@ -10,6 +10,7 @@ import javax.swing.JPanel;
import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.LoadingBasicPane;
import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundPane4Browser;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane; import com.fr.design.style.background.BackgroundPane;
import com.fr.web.attr.ReportWebAttr; import com.fr.web.attr.ReportWebAttr;
@ -50,7 +51,7 @@ public class ReportWebAttrPane extends LoadingBasicPane {
tabbedPane.add(Inter.getLocText("WEB-Write_Setting"), writeWeb = new WriteWebSettingPane()); tabbedPane.add(Inter.getLocText("WEB-Write_Setting"), writeWeb = new WriteWebSettingPane());
tabbedPane.add(Inter.getLocText("M-Data_Analysis_Settings"), viewWeb = new ViewWebSettingPane()); tabbedPane.add(Inter.getLocText("M-Data_Analysis_Settings"), viewWeb = new ViewWebSettingPane());
tabbedPane.addTab(Inter.getLocText("ReportServerP-Browser_Background"), backgroundPane = new BackgroundPane(true)); tabbedPane.addTab(Inter.getLocText("ReportServerP-Browser_Background"), backgroundPane = new BackgroundPane4Browser());
tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_Css"), cssPane = new WebCssPane()); tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_Css"), cssPane = new WebCssPane());
tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_JavaScript"), jsPane = new WebJsPane()); tabbedPane.addTab(Inter.getLocText("ReportServerP-Import_JavaScript"), jsPane = new WebJsPane());
} }

44
designer_base/src/com/fr/design/ExtraDesignClassManager.java

@ -134,6 +134,10 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi
private Set<ExportAttrTabProvider> exportAttrTabProviders; private Set<ExportAttrTabProvider> exportAttrTabProviders;
private Set<BackgroundQuickUIProvider> backgroundQuickUIProviders;
private Set<BackgroundUIProvider> backgroundUIProviders;
public TableDataPaneProcessor getTableDataPaneProcessor() { public TableDataPaneProcessor getTableDataPaneProcessor() {
return tableDataPaneProcessor; return tableDataPaneProcessor;
} }
@ -770,6 +774,36 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi
exportAttrTabProviders.add((ExportAttrTabProvider) level); exportAttrTabProviders.add((ExportAttrTabProvider) level);
} }
public BackgroundQuickUIProvider[] getBackgroundQuickUIProviders() {
if (backgroundQuickUIProviders == null) {
return new BackgroundQuickUIProvider[0];
}
return backgroundQuickUIProviders.toArray(new BackgroundQuickUIProvider[backgroundQuickUIProviders.size()]);
}
public void addBackgroundQuickUIProvider(Level level, PluginSimplify simplify) throws Exception {
if (backgroundQuickUIProviders == null) {
backgroundQuickUIProviders = new HashSet<>();
}
validAPILevel(level, BackgroundQuickUIProvider.CURRENT_LEVEL, simplify.getPluginName());
backgroundQuickUIProviders.add((BackgroundQuickUIProvider) level);
}
public BackgroundUIProvider[] getBackgroundUIProviders() {
if (backgroundUIProviders == null) {
return new BackgroundUIProvider[0];
}
return backgroundUIProviders.toArray(new BackgroundUIProvider[backgroundUIProviders.size()]);
}
public void addBackgroundUIProvider(Level level, PluginSimplify simplify) throws Exception {
if (backgroundUIProviders == null) {
backgroundUIProviders = new HashSet<>();
}
validAPILevel(level, BackgroundUIProvider.CURRENT_LEVEL, simplify.getPluginName());
backgroundUIProviders.add((BackgroundUIProvider) level);
}
/** /**
* 文件名 * 文件名
* *
@ -824,6 +858,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi
readWidgetRelated(tagName, impl, simplify); readWidgetRelated(tagName, impl, simplify);
//数据集, 数据连接 //数据集, 数据连接
readTableDataRelated(tagName, className, simplify); readTableDataRelated(tagName, className, simplify);
// 样式相关的
readStyleRelated(tagName, impl, simplify);
if (tagName.equals(ParameterWidgetOptionProvider.XML_TAG)) { if (tagName.equals(ParameterWidgetOptionProvider.XML_TAG)) {
addParameterWidgetOption(impl, simplify); addParameterWidgetOption(impl, simplify);
} else if (tagName.equals(PreviewProvider.MARK_STRING)) { } else if (tagName.equals(PreviewProvider.MARK_STRING)) {
@ -898,6 +934,14 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi
} }
} }
private void readStyleRelated(String tagName, Level impl, PluginSimplify simplify) throws Exception {
if (tagName.equals(BackgroundQuickUIProvider.MARK_STRING)) {
addBackgroundQuickUIProvider(impl, simplify);
} else if (tagName.equals(BackgroundUIProvider.MARK_STRING)) {
addBackgroundUIProvider(impl, simplify);
}
}
/** /**
* 写xml * 写xml
* *

22
designer_base/src/com/fr/design/fun/BackgroundQuickUIProvider.java

@ -0,0 +1,22 @@
package com.fr.design.fun;
import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane;
import com.fr.stable.fun.Level;
import com.fr.stable.fun.Provider;
/**
* Created by richie on 16/5/18.
* 背景设置界面接口,用于扩展设置更多类型的背景
*/
public interface BackgroundQuickUIProvider extends Level, Provider {
String MARK_STRING = "BackgroundQuickUIProvider";
int CURRENT_LEVEL = 1;
/**
* 背景设置界面
* @return 设置界面
*/
BackgroundQuickPane appearanceForBackground();
}

34
designer_base/src/com/fr/design/fun/BackgroundUIProvider.java

@ -0,0 +1,34 @@
package com.fr.design.fun;
import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.general.Background;
import com.fr.stable.fun.Level;
import com.fr.stable.fun.Provider;
/**
* Created by richie on 16/5/18.
*/
public interface BackgroundUIProvider extends Level, Provider {
String MARK_STRING = "BackgroundUIProvider";
int CURRENT_LEVEL = 1;
/**
* 对应的背景具体类型
* @return 背景
*/
Class<? extends Background> targetClass();
/**
* 背景设置界面
* @return 界面
*/
Class<? extends BackgroundDetailPane> targetUIClass();
/**
* 标题
* @return 在设计界面上这个选项的显示标题
*/
String targetTitle();
}

20
designer_base/src/com/fr/design/fun/impl/AbstractBackgroundQuickUIProvider.java

@ -0,0 +1,20 @@
package com.fr.design.fun.impl;
import com.fr.design.fun.BackgroundQuickUIProvider;
import com.fr.stable.fun.impl.AbstractProvider;
/**
* Created by richie on 16/5/18.
*/
public abstract class AbstractBackgroundQuickUIProvider extends AbstractProvider implements BackgroundQuickUIProvider {
@Override
public int currentAPILevel() {
return CURRENT_LEVEL;
}
@Override
public String mark4Provider() {
return getClass().getName();
}
}

20
designer_base/src/com/fr/design/fun/impl/AbstractBackgroundUIProvider.java

@ -0,0 +1,20 @@
package com.fr.design.fun.impl;
import com.fr.design.fun.BackgroundUIProvider;
import com.fr.stable.fun.impl.AbstractProvider;
/**
* Created by richie on 16/5/18.
*/
public abstract class AbstractBackgroundUIProvider extends AbstractProvider implements BackgroundUIProvider {
@Override
public int currentAPILevel() {
return CURRENT_LEVEL;
}
@Override
public String mark4Provider() {
return getClass().getName();
}
}

25
designer_base/src/com/fr/design/gui/style/BackgroundNoImagePane.java

@ -1,10 +1,10 @@
package com.fr.design.gui.style; package com.fr.design.gui.style;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane;
import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; import com.fr.design.mainframe.backgroundpane.GradientBackgroundQuickPane;
import java.util.ArrayList; import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane;
/** /**
* Created with IntelliJ IDEA. * Created with IntelliJ IDEA.
@ -18,8 +18,9 @@ public class BackgroundNoImagePane extends BackgroundPane{
super(); super();
} }
protected void initPaneList(){ @Override
ColorBackgroundPane colorBackgroundPane = new ColorBackgroundPane(); protected BackgroundQuickPane[] supportKindsOfBackgroundUI() {
ColorBackgroundQuickPane colorBackgroundPane = new ColorBackgroundQuickPane();
colorBackgroundPane.registerChangeListener(new UIObserverListener() { colorBackgroundPane.registerChangeListener(new UIObserverListener() {
@Override @Override
@ -27,7 +28,7 @@ public class BackgroundNoImagePane extends BackgroundPane{
fireStateChanged(); fireStateChanged();
} }
}); });
GradientPane gradientPane = new GradientPane(); GradientBackgroundQuickPane gradientPane = new GradientBackgroundQuickPane();
gradientPane.registerChangeListener(new UIObserverListener() { gradientPane.registerChangeListener(new UIObserverListener() {
@Override @Override
@ -35,10 +36,10 @@ public class BackgroundNoImagePane extends BackgroundPane{
fireStateChanged(); fireStateChanged();
} }
}); });
paneList = new ArrayList<BackgroundSettingPane>(); return new BackgroundQuickPane[]{
paneList.add(new NullBackgroundPane()); new NullBackgroundQuickPane(),
paneList.add(colorBackgroundPane); colorBackgroundPane,
paneList.add(gradientPane); gradientPane
};
} }
} }

75
designer_base/src/com/fr/design/gui/style/BackgroundPane.java

@ -1,34 +1,22 @@
package com.fr.design.gui.style; package com.fr.design.gui.style;
/*
* Copyright(c) 2001-2010, FineReport Inc, All Rights Reserved.
*/
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.BackgroundQuickUIProvider;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; import com.fr.design.mainframe.backgroundpane.*;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane;
import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane;
import com.fr.design.mainframe.backgroundpane.NullBackgroundPane;
import com.fr.design.mainframe.backgroundpane.PatternBackgroundPane;
import com.fr.design.mainframe.backgroundpane.TextureBackgroundPane;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
/** /**
*
* @author zhou * @author zhou
* @since 2012-5-28下午6:22:09 * @since 2012-5-28下午6:22:09
*/ */
@ -36,7 +24,7 @@ public class BackgroundPane extends AbstractBasicStylePane {
private UIComboBox typeComboBox; private UIComboBox typeComboBox;
protected List<BackgroundSettingPane> paneList; protected BackgroundQuickPane[] paneList;
public BackgroundPane() { public BackgroundPane() {
this.initComponents(); this.initComponents();
@ -48,16 +36,16 @@ public class BackgroundPane extends AbstractBasicStylePane {
final CardLayout cardlayout = new CardLayout(); final CardLayout cardlayout = new CardLayout();
this.add(typeComboBox, BorderLayout.NORTH); this.add(typeComboBox, BorderLayout.NORTH);
initPaneList(); paneList = supportKindsOfBackgroundUI();
final JPanel centerPane = new JPanel(cardlayout) { final JPanel centerPane = new JPanel(cardlayout) {
@Override @Override
public Dimension getPreferredSize() {// AUGUST:使用当前面板的的高度 public Dimension getPreferredSize() {// AUGUST:使用当前面板的的高度
int index = typeComboBox.getSelectedIndex(); int index = typeComboBox.getSelectedIndex();
return new Dimension(super.getPreferredSize().width, paneList.get(index).getPreferredSize().height); return new Dimension(super.getPreferredSize().width, paneList[index].getPreferredSize().height);
} }
}; };
for (int i = 0; i < paneList.size(); i++) { for (BackgroundQuickPane pane : paneList) {
BackgroundSettingPane pane = paneList.get(i);
typeComboBox.addItem(pane.title4PopupWindow()); typeComboBox.addItem(pane.title4PopupWindow());
centerPane.add(pane, pane.title4PopupWindow()); centerPane.add(pane, pane.title4PopupWindow());
} }
@ -72,18 +60,26 @@ public class BackgroundPane extends AbstractBasicStylePane {
}); });
} }
protected void initPaneList(){ protected BackgroundQuickPane[] supportKindsOfBackgroundUI() {
paneList = new ArrayList<BackgroundSettingPane>(); java.util.List<BackgroundQuickPane> kinds = new ArrayList<>();
paneList.add(new NullBackgroundPane()); kinds.add(new NullBackgroundQuickPane());
paneList.add(new ColorBackgroundPane()); kinds.add(new ColorBackgroundQuickPane());
paneList.add(new TextureBackgroundPane()); kinds.add(new TextureBackgroundQuickPane());
paneList.add(new PatternBackgroundPane()); kinds.add(new PatternBackgroundQuickPane());
paneList.add(new ImageBackgroundPane()); kinds.add(new ImageBackgroundQuickPane());
paneList.add(new GradientPane()); kinds.add(new GradientBackgroundQuickPane());
BackgroundQuickUIProvider[] providers = ExtraDesignClassManager.getInstance().getBackgroundQuickUIProviders();
for (BackgroundQuickUIProvider provider : providers) {
kinds.add(provider.appearanceForBackground());
}
return kinds.toArray(new BackgroundQuickPane[kinds.size()]);
} }
/** /**
* 事件监听 * 事件监听
*
* @param changeListener 事件 * @param changeListener 事件
*/ */
public void addChangeListener(ChangeListener changeListener) { public void addChangeListener(ChangeListener changeListener) {
@ -108,6 +104,7 @@ public class BackgroundPane extends AbstractBasicStylePane {
/** /**
* 名称 * 名称
*
* @return 名称 * @return 名称
*/ */
public String title4PopupWindow() { public String title4PopupWindow() {
@ -118,8 +115,8 @@ public class BackgroundPane extends AbstractBasicStylePane {
* Populate background. * Populate background.
*/ */
public void populateBean(Background background) { public void populateBean(Background background) {
for (int i = 0; i < paneList.size(); i++) { for (int i = 0; i < paneList.length; i++) {
BackgroundSettingPane pane = paneList.get(i); BackgroundQuickPane pane = paneList[i];
if (pane.accept(background)) { if (pane.accept(background)) {
pane.populateBean(background); pane.populateBean(background);
typeComboBox.setSelectedIndex(i); typeComboBox.setSelectedIndex(i);
@ -132,7 +129,7 @@ public class BackgroundPane extends AbstractBasicStylePane {
* Update background. * Update background.
*/ */
public Background update() { public Background update() {
return paneList.get(typeComboBox.getSelectedIndex()).updateBean(); return paneList[typeComboBox.getSelectedIndex()].updateBean();
} }
@Override @Override

28
designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java

@ -1,12 +1,7 @@
package com.fr.design.gui.style; package com.fr.design.gui.style;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; import com.fr.design.mainframe.backgroundpane.*;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane;
import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane;
import com.fr.design.mainframe.backgroundpane.NullBackgroundPane;
import java.util.ArrayList;
/** /**
* Created with IntelliJ IDEA. * Created with IntelliJ IDEA.
@ -20,8 +15,9 @@ public class BackgroundSpecialPane extends BackgroundPane{
super(); super();
} }
protected void initPaneList(){ @Override
ColorBackgroundPane colorBackgroundPane = new ColorBackgroundPane(); protected BackgroundQuickPane[] supportKindsOfBackgroundUI() {
ColorBackgroundQuickPane colorBackgroundPane = new ColorBackgroundQuickPane();
colorBackgroundPane.registerChangeListener(new UIObserverListener() { colorBackgroundPane.registerChangeListener(new UIObserverListener() {
@Override @Override
@ -29,7 +25,7 @@ public class BackgroundSpecialPane extends BackgroundPane{
fireStateChanged(); fireStateChanged();
} }
}); });
ImageBackgroundPane imageBackgroundPane = new ImageBackgroundPane(); ImageBackgroundQuickPane imageBackgroundPane = new ImageBackgroundQuickPane();
imageBackgroundPane.registerChangeListener(new UIObserverListener() { imageBackgroundPane.registerChangeListener(new UIObserverListener() {
@Override @Override
@ -37,18 +33,18 @@ public class BackgroundSpecialPane extends BackgroundPane{
fireStateChanged(); fireStateChanged();
} }
}); });
GradientPane gradientPane = new GradientPane(); GradientBackgroundQuickPane gradientPane = new GradientBackgroundQuickPane();
gradientPane.registerChangeListener(new UIObserverListener() { gradientPane.registerChangeListener(new UIObserverListener() {
@Override @Override
public void doChange() { public void doChange() {
fireStateChanged(); fireStateChanged();
} }
}); });
paneList = new ArrayList<BackgroundSettingPane>(); return new BackgroundQuickPane[] {
paneList.add(new NullBackgroundPane()); new NullBackgroundQuickPane(),
paneList.add(colorBackgroundPane); colorBackgroundPane,
paneList.add(imageBackgroundPane); imageBackgroundPane,
paneList.add(gradientPane); gradientPane
};
} }
} }

2
designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundSettingPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java

@ -8,7 +8,7 @@ import com.fr.general.Background;
* @author zhou * @author zhou
* @since 2012-5-29下午1:12:28 * @since 2012-5-29下午1:12:28
*/ */
public abstract class BackgroundSettingPane extends BasicBeanPane<Background> implements UIObserver { public abstract class BackgroundQuickPane extends BasicBeanPane<Background> implements UIObserver {
public abstract boolean accept(Background background); public abstract boolean accept(Background background);

4
designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java

@ -15,11 +15,11 @@ import java.awt.*;
* @author zhou * @author zhou
* @since 2012-5-29下午1:12:14 * @since 2012-5-29下午1:12:14
*/ */
public class ColorBackgroundPane extends BackgroundSettingPane { public class ColorBackgroundQuickPane extends BackgroundQuickPane {
private NewColorSelectPane detailColorSelectPane; private NewColorSelectPane detailColorSelectPane;
public ColorBackgroundPane() { public ColorBackgroundQuickPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
detailColorSelectPane = new NewColorSelectPane(); detailColorSelectPane = new NewColorSelectPane();

11
designer_base/src/com/fr/design/gui/style/GradientPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java

@ -1,4 +1,4 @@
package com.fr.design.gui.style; package com.fr.design.mainframe.backgroundpane;
import com.fr.base.background.GradientBackground; import com.fr.base.background.GradientBackground;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
@ -6,10 +6,9 @@ import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; import com.fr.design.style.background.gradient.GradientBar;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.gradient.GradientBar;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
@ -20,7 +19,7 @@ import java.awt.*;
* @author zhou * @author zhou
* @since 2012-5-30上午10:36:21 * @since 2012-5-30上午10:36:21
*/ */
public class GradientPane extends BackgroundSettingPane { public class GradientBackgroundQuickPane extends BackgroundQuickPane {
private static final long serialVersionUID = -6854603990673031897L; private static final long serialVersionUID = -6854603990673031897L;
private static final int DEFAULT_GRADIENT_WIDTH = 185; private static final int DEFAULT_GRADIENT_WIDTH = 185;
@ -30,11 +29,11 @@ public class GradientPane extends BackgroundSettingPane {
private GradientBar gradientBar; private GradientBar gradientBar;
private UIButtonGroup<Integer> directionPane; private UIButtonGroup<Integer> directionPane;
public GradientPane() { public GradientBackgroundQuickPane() {
constructPane(); constructPane();
} }
public GradientPane(int gradientBarWidth) { public GradientBackgroundQuickPane(int gradientBarWidth) {
this.gradientBarWidth = gradientBarWidth; this.gradientBarWidth = gradientBarWidth;
constructPane(); constructPane();
} }

8
designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java

@ -28,7 +28,7 @@ import java.io.File;
* @author zhou * @author zhou
* @since 2012-5-29下午1:12:06 * @since 2012-5-29下午1:12:06
*/ */
public class ImageBackgroundPane extends BackgroundSettingPane { public class ImageBackgroundQuickPane extends BackgroundQuickPane {
private ImagePreviewPane previewPane; private ImagePreviewPane previewPane;
private Style imageStyle = null; private Style imageStyle = null;
@ -37,11 +37,11 @@ public class ImageBackgroundPane extends BackgroundSettingPane {
private UIButtonGroup<Byte> imageLayoutPane; private UIButtonGroup<Byte> imageLayoutPane;
public ImageBackgroundPane() { public ImageBackgroundQuickPane() {
this(true); this(true);
} }
public ImageBackgroundPane(boolean hasImageLayout) { public ImageBackgroundQuickPane(boolean hasImageLayout) {
this.setLayout(new BorderLayout(0, 4)); this.setLayout(new BorderLayout(0, 4));
String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")}; String[] nameArray = {Inter.getLocText("FR-Background_Image_Default"), Inter.getLocText("FR-Background_Image_Titled"), Inter.getLocText("FR-Background_Image_Adjust"), Inter.getLocText("FR-Background_Image_Extend")};
Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST}; Byte[] valueArray = {Constants.IMAGE_CENTER, Constants.IMAGE_TILED, Constants.IMAGE_EXTEND, Constants.IMAGE_ADJUST};
@ -121,7 +121,7 @@ public class ImageBackgroundPane extends BackgroundSettingPane {
imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout()); imageLayoutPane.setSelectedItem((byte) imageBackground.getLayout());
Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout()); Style.DEFAULT_STYLE.deriveImageLayout(imageBackground.getLayout());
previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle); previewPane.setImageStyle(ImageBackgroundQuickPane.this.imageStyle);
previewPane.setImage(imageBackground.getImage()); previewPane.setImage(imageBackground.getImage());
previewPane.repaint(); previewPane.repaint();
} }

2
designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java

@ -10,7 +10,7 @@ import java.awt.*;
* @author zhou * @author zhou
* @since 2012-5-29下午1:12:24 * @since 2012-5-29下午1:12:24
*/ */
public class NullBackgroundPane extends BackgroundSettingPane { public class NullBackgroundQuickPane extends BackgroundQuickPane {
public Dimension getPreferredSize(){ public Dimension getPreferredSize(){
return new Dimension(0,0); return new Dimension(0,0);

14
designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java

@ -23,14 +23,14 @@ import java.awt.geom.Rectangle2D;
* @author zhou * @author zhou
* @since 2012-5-29下午1:12:33 * @since 2012-5-29下午1:12:33
*/ */
public class PatternBackgroundPane extends BackgroundSettingPane { public class PatternBackgroundQuickPane extends BackgroundQuickPane {
private int patternIndex = 0; // pattern index. private int patternIndex = 0; // pattern setIndex.
private ColorSelectBox foregroundColorPane; private ColorSelectBox foregroundColorPane;
private ColorSelectBox backgroundColorPane; private ColorSelectBox backgroundColorPane;
private PatternButton[] patternButtonArray; private PatternButton[] patternButtonArray;
public PatternBackgroundPane() { public PatternBackgroundQuickPane() {
this.setLayout(new BorderLayout(0, 4)); this.setLayout(new BorderLayout(0, 4));
JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
@ -132,7 +132,7 @@ public class PatternBackgroundPane extends BackgroundSettingPane {
patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject()); patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject());
} }
PatternBackgroundPane.this.repaint();// repaint PatternBackgroundQuickPane.this.repaint();// repaint
} }
}; };
@ -175,13 +175,13 @@ public class PatternBackgroundPane extends BackgroundSettingPane {
} }
/** /**
* set Pattern index. * set Pattern setIndex.
*/ */
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
PatternBackgroundPane.this.patternIndex = pIndex; PatternBackgroundQuickPane.this.patternIndex = pIndex;
fireChagneListener(); fireChagneListener();
PatternBackgroundPane.this.repaint();// repaint PatternBackgroundQuickPane.this.repaint();// repaint
} }
public void addChangeListener(ChangeListener changeListener) { public void addChangeListener(ChangeListener changeListener) {

10
designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundPane.java → designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java

@ -18,12 +18,12 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
public class TextureBackgroundPane extends BackgroundSettingPane { public class TextureBackgroundQuickPane extends BackgroundQuickPane {
private TexturePaint texturePaint; private TexturePaint texturePaint;
private TextureButton[] textureButtonArray; private TextureButton[] textureButtonArray;
public TextureBackgroundPane() { public TextureBackgroundQuickPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
@ -122,13 +122,13 @@ public class TextureBackgroundPane extends BackgroundSettingPane {
} }
/** /**
* set Pattern index. * set Pattern setIndex.
*/ */
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
TextureBackgroundPane.this.texturePaint = this.getTexturePaint(); TextureBackgroundQuickPane.this.texturePaint = this.getTexturePaint();
fireChagneListener(); fireChagneListener();
TextureBackgroundPane.this.repaint(); // repaint. TextureBackgroundQuickPane.this.repaint(); // repaint.
} }
public void addChangeListener(ChangeListener changeListener) { public void addChangeListener(ChangeListener changeListener) {

6
designer_base/src/com/fr/design/style/AbstractPopBox.java

@ -2,7 +2,7 @@ package com.fr.design.style;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundJComponent; import com.fr.design.style.background.BackgroundJComponent;
import com.fr.design.style.background.gradient.GradientPane; import com.fr.design.style.background.gradient.GradientBackgroundPane;
import com.fr.general.Background; import com.fr.general.Background;
import javax.swing.*; import javax.swing.*;
@ -96,8 +96,8 @@ public abstract class AbstractPopBox extends JPanel {
mouseClick(evt); mouseClick(evt);
} }
}; };
if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientPane.class, this) != null) { if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this) != null) {
SwingUtilities.getAncestorOfClass(GradientPane.class, this).addMouseListener(parentMouseListener); SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this).addMouseListener(parentMouseListener);
this.isWindowEventInit = true; this.isWindowEventInit = true;
} }
} }

18
designer_base/src/com/fr/design/style/background/BackgroundDetailPane.java

@ -0,0 +1,18 @@
package com.fr.design.style.background;
import com.fr.general.Background;
import javax.swing.*;
import javax.swing.event.ChangeListener;
/**
* Created by richie on 16/5/18.
*/
public abstract class BackgroundDetailPane extends JPanel {
public abstract void populate(Background background);
public abstract Background update() throws Exception;
public abstract void addChangeListener(ChangeListener changeListener);
}

121
designer_base/src/com/fr/design/style/background/BackgroundFactory.java

@ -0,0 +1,121 @@
package com.fr.design.style.background;
import com.fr.base.background.*;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.BackgroundUIProvider;
import com.fr.design.style.background.gradient.GradientBackgroundPane;
import com.fr.design.style.background.impl.*;
import com.fr.general.Background;
import com.fr.general.Inter;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by richie on 16/5/18.
*/
public class BackgroundFactory {
private static Map<Class<? extends Background>, BackgroundUIWrapper> map = new HashMap<>();
private static Map<Class<? extends Background>, BackgroundUIWrapper> browser = new HashMap<>();
static {
registerUniversal(map);
registerImageBackground(map);
registerUniversal(browser);
registerBrowserImageBackground(browser);
registerExtra(map);
registerExtra(browser);
}
private static void registerUniversal(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(null, BackgroundUIWrapper.create()
.setType(NullBackgroundPane.class).setTitle(Inter.getLocText("Background-Null")));
map.put(ColorBackground.class, BackgroundUIWrapper.create()
.setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("Color")));
map.put(TextureBackground.class, BackgroundUIWrapper.create()
.setType(TextureBackgroundPane.class).setTitle(Inter.getLocText("Background-Texture")));
map.put(PatternBackground.class, BackgroundUIWrapper.create()
.setType(PatternBackgroundPane.class).setTitle(Inter.getLocText("Background-Pattern")));
map.put(GradientBackground.class, BackgroundUIWrapper.create()
.setType(GradientBackgroundPane.class).setTitle(Inter.getLocText("Gradient-Color")));
}
private static void registerImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(ImageBackground.class, BackgroundUIWrapper.create()
.setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("Image")));
}
private static void registerBrowserImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(ImageBackground.class, BackgroundUIWrapper.create()
.setType(ImageBackgroundPane4Browser.class).setTitle(Inter.getLocText("Image")));
}
private static void registerExtra(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
for (BackgroundUIProvider provider : ExtraDesignClassManager.getInstance().getBackgroundUIProviders()) {
map.put(provider.targetClass(), BackgroundUIWrapper.create()
.setType(provider.targetUIClass()).setTitle(provider.targetTitle()));
}
}
public static Set<Class<? extends Background>> kindsOfKey() {
return map.keySet();
}
public static BackgroundUIWrapper getWrapper(Class<? extends Background> category) {
return map.get(category);
}
public static BackgroundDetailPane createIfAbsent(Class<? extends Background> category) {
BackgroundUIWrapper wrapper = map.get(category);
return createByWrapper(wrapper);
}
public static BackgroundDetailPane createIfAbsent(int index) {
for (BackgroundUIWrapper wrapper : map.values()) {
if (wrapper.getIndex() == index) {
return createByWrapper(wrapper);
}
}
return new NullBackgroundPane();
}
public static Set<Class<? extends Background>> browserKindsOfKey() {
return browser.keySet();
}
public static BackgroundUIWrapper getBrosweWrapper(Class<? extends Background> category) {
return browser.get(category);
}
public static BackgroundDetailPane createBrowserIfAbsent(Class<? extends Background> category) {
BackgroundUIWrapper wrapper = browser.get(category);
return createByWrapper(wrapper);
}
public static BackgroundDetailPane createBrowerIfAbsent(int index) {
for (BackgroundUIWrapper wrapper : browser.values()) {
if (wrapper.getIndex() == index) {
return createByWrapper(wrapper);
}
}
return new NullBackgroundPane();
}
private static BackgroundDetailPane createByWrapper(BackgroundUIWrapper wrapper) {
Class<? extends BackgroundDetailPane> clazz = wrapper.getType();
if (clazz == null) {
clazz = NullBackgroundPane.class;
}
BackgroundDetailPane quickPane;
try {
quickPane = clazz.newInstance();
} catch (Exception e) {
quickPane = new NullBackgroundPane();
}
return quickPane;
}
}

893
designer_base/src/com/fr/design/style/background/BackgroundPane.java

@ -4,87 +4,32 @@
package com.fr.design.style.background; package com.fr.design.style.background;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.util.HashMap;
import java.awt.Graphics2D; import java.util.Map;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.LayoutManager;
import java.awt.TexturePaint;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JFileChooser;
import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JToggleButton;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList; import javax.swing.event.EventListenerList;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.GraphHelper;
import com.fr.base.Style;
import com.fr.base.background.ColorBackground;
import com.fr.base.background.GradientBackground;
import com.fr.base.background.ImageBackground;
import com.fr.base.background.PatternBackground;
import com.fr.base.background.TextureBackground;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.Constants;
import com.fr.stable.CoreGraphHelper;
import com.fr.design.style.background.gradient.GradientPane;
import com.fr.design.style.background.image.ImageFileChooser;
import com.fr.design.style.background.image.ImagePreviewPane;
import com.fr.design.style.color.ColorSelectBox;
import com.fr.design.style.color.DetailColorSelectPane;
import com.fr.design.utils.gui.GUICoreUtils;
public class BackgroundPane extends BasicPane { public class BackgroundPane extends BasicPane {
private static final int BACKGROUND_NULL = 0;
private static final int BACKGROUND_COLOR = 1;
private static final int BACKGROUND_TEXTURE = 2;
private static final int BACKGROUND_PATTERN = 3;
private static final int BACKGROUND_IMAGE = 4;
private static final int BACKGROUND_GRADIENT_COLOR = 5;
private UITabbedPane tabbedPane = null; protected UITabbedPane tabbedPane = null;
private NullBackgroundPane nullBackgroundPane = null;
private ColorBackgroundPane colorBackgroundPane = null;
private TextureBackgroundPane textureBackgroundPane = null;
private PatternBackgroundPane patternBackgroundPane = null;
private ImageBackgroundPane imageBackgroundPane = null;
private GradientPane gradientPane = null;
private EventListenerList eventChangeList = new EventListenerList(); private EventListenerList eventChangeList = new EventListenerList();
private static boolean isBrowserBackgroundPane; protected Map<Integer, BackgroundDetailPane> cacheMap = new HashMap<>();
public BackgroundPane(){
this(false);
}
//需求说: 如果是浏览器背景, 隐藏掉几个button //需求说: 如果是浏览器背景, 隐藏掉几个button
public BackgroundPane(boolean isBrowserBackgroundPane) { public BackgroundPane() {
BackgroundPane.isBrowserBackgroundPane = isBrowserBackgroundPane;
this.initComponents(); this.initComponents();
this.setPreferredSize(new Dimension(400, 300)); this.setPreferredSize(new Dimension(400, 300));
} }
@ -103,16 +48,21 @@ public class BackgroundPane extends BasicPane {
tabbedPane = new UITabbedPane(); tabbedPane = new UITabbedPane();
this.add(tabbedPane, BorderLayout.CENTER); this.add(tabbedPane, BorderLayout.CENTER);
tabbedPane.addTab(Inter.getLocText("Background-Null"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); initTabPane();
tabbedPane.addTab(Inter.getLocText("Color"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
tabbedPane.addTab(Inter.getLocText("Background-Texture"),FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
tabbedPane.addTab(Inter.getLocText("Background-Pattern"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
tabbedPane.addTab(Inter.getLocText("Image"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
tabbedPane.addTab(Inter.getLocText("Gradient-Color"), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
tabbedPane.addChangeListener(backgroundChangeListener); tabbedPane.addChangeListener(backgroundChangeListener);
tabbedPane.setPreferredSize(new Dimension(200, 210)); tabbedPane.setPreferredSize(new Dimension(200, 210));
} }
protected void initTabPane() {
int index = 0;
for (Class<? extends Background> key : BackgroundFactory.kindsOfKey()) {
BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(key);
wrapper.setIndex(index++);
tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
}
}
public void addChangeListener(ChangeListener changeListener) { public void addChangeListener(ChangeListener changeListener) {
eventChangeList.add(ChangeListener.class, changeListener); eventChangeList.add(ChangeListener.class, changeListener);
} }
@ -138,86 +88,39 @@ public class BackgroundPane extends BasicPane {
return Inter.getLocText("Background"); return Inter.getLocText("Background");
} }
private NullBackgroundPane getNullBackgroundPane() {
if (this.nullBackgroundPane == null) {
this.nullBackgroundPane = new NullBackgroundPane();
nullBackgroundPane.addChangeListener(backgroundChangeListener);
}
return this.nullBackgroundPane;
}
private ColorBackgroundPane getColorBackgroundPane() {
if (this.colorBackgroundPane == null) {
this.colorBackgroundPane = new ColorBackgroundPane();
colorBackgroundPane.addChangeListener(backgroundChangeListener);
}
return this.colorBackgroundPane;
}
private TextureBackgroundPane getTextureBackgroundPane() { protected BackgroundDetailPane getTabItemPane(Background background, int index) {
if (this.textureBackgroundPane == null) { BackgroundDetailPane quickPane = cacheMap.get(index);
this.textureBackgroundPane = new TextureBackgroundPane(); if (quickPane == null) {
textureBackgroundPane.addChangeListener(backgroundChangeListener); quickPane = BackgroundFactory.createIfAbsent(background == null ? null : background.getClass());
quickPane.addChangeListener(backgroundChangeListener);
cacheMap.put(index, quickPane);
} }
return this.textureBackgroundPane; tabbedPane.setComponentAt(index, quickPane);
tabbedPane.setSelectedIndex(index);
return quickPane;
} }
private PatternBackgroundPane getPatternBackgroundPane() { protected BackgroundDetailPane getTabItemPaneByIndex(int index) {
if (this.patternBackgroundPane == null) { BackgroundDetailPane quickPane = cacheMap.get(index);
this.patternBackgroundPane = new PatternBackgroundPane(); if (quickPane == null) {
patternBackgroundPane.addChangeListener(backgroundChangeListener); quickPane = BackgroundFactory.createIfAbsent(index);
tabbedPane.setComponentAt(index, quickPane);
cacheMap.put(index, quickPane);
quickPane.addChangeListener(backgroundChangeListener);
} }
return this.patternBackgroundPane; return quickPane;
} }
private ImageBackgroundPane getImageBackgroundPane() {
if (this.imageBackgroundPane == null) {
this.imageBackgroundPane = new ImageBackgroundPane();
imageBackgroundPane.addChangeListener(backgroundChangeListener);
}
return this.imageBackgroundPane;
}
private GradientPane getGradientPane() {
if (this.gradientPane == null) {
this.gradientPane = new GradientPane();
gradientPane.addChangeListener(backgroundChangeListener);
}
return this.gradientPane;
}
/** /**
* Populate background. * Populate background.
*/ */
public void populate(Background background) { public void populate(Background background) {
if (background == null) { BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(background == null ? null : background.getClass());
tabbedPane.setComponentAt(0, this.getNullBackgroundPane()); int index = wrapper.getIndex();
tabbedPane.setSelectedIndex(0); BackgroundDetailPane quickPane = getTabItemPane(background, index);
nullBackgroundPane.populate(background); quickPane.populate(background);
} else {
if (background instanceof ColorBackground) {
tabbedPane.setComponentAt(1, this.getColorBackgroundPane());
tabbedPane.setSelectedIndex(1);
colorBackgroundPane.populate(background);
} else if (background instanceof TextureBackground) {
tabbedPane.setComponentAt(2, this.getTextureBackgroundPane());
tabbedPane.setSelectedIndex(2);
textureBackgroundPane.populate(background);
} else if (background instanceof PatternBackground) {
tabbedPane.setComponentAt(3, this.getPatternBackgroundPane());
tabbedPane.setSelectedIndex(3);
patternBackgroundPane.populate(background);
} else if (background instanceof ImageBackground) {
tabbedPane.setComponentAt(4, this.getImageBackgroundPane());
tabbedPane.setSelectedIndex(4);
imageBackgroundPane.populate(background);
} else if (background instanceof GradientBackground) {
tabbedPane.setComponentAt(5, this.getGradientPane());
tabbedPane.setSelectedIndex(5);
gradientPane.populate(background);
}
}
tabbedPane.doLayout(); tabbedPane.doLayout();
tabbedPane.validate(); tabbedPane.validate();
@ -227,42 +130,19 @@ public class BackgroundPane extends BasicPane {
* Update background. * Update background.
*/ */
public Background update() { public Background update() {
int index = tabbedPane.getSelectedIndex();
BackgroundDetailPane quickPane = getTabItemPaneByIndex(index);
try { try {
Component selectComponent = tabbedPane.getSelectedComponent(); return quickPane.update();
if (selectComponent.getClass() == JPanel.class) {//需要初始化.
int selectedIndex = tabbedPane.getSelectedIndex();
if (selectedIndex == BACKGROUND_NULL) {
selectComponent = this.getNullBackgroundPane();
} else if (selectedIndex == BACKGROUND_COLOR) {
selectComponent = this.getColorBackgroundPane();
} else if (selectedIndex == BACKGROUND_TEXTURE) {
selectComponent = this.getTextureBackgroundPane();
} else if (selectedIndex == BACKGROUND_PATTERN) {
selectComponent = this.getPatternBackgroundPane();
} else if (selectedIndex == BACKGROUND_IMAGE) {
selectComponent = this.getImageBackgroundPane();
} else if (selectedIndex == BACKGROUND_GRADIENT_COLOR) {
selectComponent = this.getGradientPane();
}
tabbedPane.setComponentAt(selectedIndex, selectComponent);
}
if (selectComponent instanceof BackgroundSettingPane) {
return ((BackgroundSettingPane) selectComponent).update();
} else if (selectComponent instanceof GradientPane) {
return ((GradientPane) selectComponent).update();
}
} catch (Exception e) { } catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e); FRLogger.getLogger().error(e.getMessage(), e);
} }
return null; return null;
} }
/** /**
* Change listener. * Change listener.
*/ */
private ChangeListener backgroundChangeListener = new ChangeListener() { protected ChangeListener backgroundChangeListener = new ChangeListener() {
public void stateChanged(ChangeEvent evt) { public void stateChanged(ChangeEvent evt) {
previewPane.setBackgroundObject(update()); previewPane.setBackgroundObject(update());
@ -271,687 +151,4 @@ public class BackgroundPane extends BasicPane {
}; };
private BackgroundPreviewLabel previewPane = null; private BackgroundPreviewLabel previewPane = null;
public static abstract class BackgroundSettingPane extends JPanel {
public abstract void populate(Background background);
public abstract Background update() throws Exception;
public abstract void addChangeListener(ChangeListener changeListener);
}
/**
* Null background pane.
*/
private static class NullBackgroundPane extends BackgroundSettingPane {
public NullBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
UILabel centerLabel = new UILabel(
Inter.getLocText("Background-Background_is_NULL") + "...");
this.add(centerLabel);
centerLabel.setHorizontalAlignment(SwingConstants.CENTER);
centerLabel.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor()));
}
public void populate(Background background) {
// do nothing.
}
public Background update() throws Exception {
return null;
}
public void addChangeListener(ChangeListener changeListener) {
// do nothing.
}
}
/**
* Color background pane.
*/
private static class ColorBackgroundPane extends BackgroundSettingPane {
private DetailColorSelectPane detailColorSelectPane;
public ColorBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
detailColorSelectPane = new DetailColorSelectPane();
this.add(detailColorSelectPane, BorderLayout.CENTER);
}
public void populate(Background background) {
if (background instanceof ColorBackground) {
ColorBackground colorBackgroud = (ColorBackground) background;
this.detailColorSelectPane.populate(colorBackgroud.getColor());
} else {
this.detailColorSelectPane.populate(Color.white);
}
}
public Background update() throws Exception {
return ColorBackground.getInstance(this.detailColorSelectPane.update());
}
public void addChangeListener(ChangeListener changeListener) {
detailColorSelectPane.addChangeListener(changeListener);
}
}
private static abstract class BPane extends BackgroundSettingPane {
BPane(int nColumn) {
this.initComponents(nColumn);
}
private void initComponents(int nColumn) {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
this.add(contentPane, BorderLayout.NORTH);
// contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
// type type.
JPanel typePane=FRGUIPaneFactory.createTitledBorderPane(titleOfTypePane());
contentPane.add(typePane);
JPanel typePane2 = new JPanel();
typePane.add(typePane2);
typePane2.setLayout(layoutOfTypePane(nColumn));
setChildrenOfTypePane(typePane2);
setChildrenOfContentPane(contentPane);
}
protected abstract String titleOfTypePane();
protected abstract LayoutManager layoutOfTypePane(int nColumn);
protected abstract void setChildrenOfTypePane(JPanel typePane2);
protected void setChildrenOfContentPane(JPanel contentPane) {}
}
/**
* Texture background pane. TODO kunsnat: 拆出去. 真特么的长..
*/
public static class TextureBackgroundPane extends BPane {
private TexturePaint texturePaint;
private TextureButton[] textureButtonArray;
public TextureBackgroundPane() {
super(8);// 默认的.
}
public TextureBackgroundPane(int colum) {
super(colum);// 自定义的.
}
protected LayoutManager layoutOfTypePane(int nColumn) {
return FRGUIPaneFactory.createNColumnGridLayout(nColumn);
}
protected String titleOfTypePane() {
return Inter.getLocText("Background-Texture");
}
protected void setChildrenOfTypePane(JPanel typePane2) {
ButtonGroup patternButtonGroup = new ButtonGroup();
textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length];
for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) {
textureButtonArray[i] = new TextureButton(
EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]);
patternButtonGroup.add(textureButtonArray[i]);
typePane2.add(textureButtonArray[i]);
}
}
public void populate(Background background) {
if (background instanceof TextureBackground) {
TextureBackground textureBackground = (TextureBackground) background;
this.texturePaint = textureBackground.getTexturePaint();
for (int i = 0; i < textureButtonArray.length; i++) {
if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) {
textureButtonArray[i].setSelected(true);
break;
}
}
} else {
this.textureButtonArray[0].setSelected(true);
this.texturePaint = textureButtonArray[0].getTexturePaint();
}
}
public Background update() throws Exception {
return new TextureBackground(this.texturePaint);
}
public void addChangeListener(ChangeListener changeListener) {
for (int i = 0; i < this.textureButtonArray.length; i++) {
this.textureButtonArray[i].addChangeListener(changeListener);
}
}
/**
* Texture type button.
*/
class TextureButton extends JToggleButton implements ActionListener {
private TexturePaint buttonTexturePaint;
public TextureButton(TexturePaint buttonTexturePaint, String tooltip) {
this.buttonTexturePaint = buttonTexturePaint;
this.setToolTipText(tooltip);
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
this.addActionListener(this);
this.setBorder(null);
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
g2d.setPaint(this.buttonTexturePaint);
GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's
// selected.
g2d.setPaint(Color.black);
} else {
g2d.setPaint(Color.gray);
}
GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
}
public Dimension getPreferredSize() {
return new Dimension(36, 32);
}
public TexturePaint getTexturePaint() {
return this.buttonTexturePaint;
}
/**
* set Pattern index.
*/
public void actionPerformed(ActionEvent evt) {
TextureBackgroundPane.this.texturePaint = this.getTexturePaint();
fireChagneListener();
TextureBackgroundPane.this.repaint(); // repaint.
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
}
}
public static class PatternBackgroundPaneNoFore extends PatternBackgroundPane {
public PatternBackgroundPaneNoFore(int nColumn) {
super(nColumn);
}
// 重载 不加载两个前后按钮
protected void setChildrenOfContentPane(JPanel contentPane) {
foregroundColorPane = new ColorSelectBox(80);
backgroundColorPane = new ColorSelectBox(80);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
}
}
/**
* Pattern background pane.
*/
public static class PatternBackgroundPane extends BPane {
private int patternIndex = 0; // pattern index.
protected ColorSelectBox foregroundColorPane;
protected ColorSelectBox backgroundColorPane;
private PatternButton[] patternButtonArray;
public PatternBackgroundPane() {
super(12);
foregroundColorPane.addSelectChangeListener(colorChangeListener);
backgroundColorPane.addSelectChangeListener(colorChangeListener);
}
public PatternBackgroundPane(int nColumn) {
super(nColumn);
if(foregroundColorPane != null) {
foregroundColorPane.addSelectChangeListener(colorChangeListener);
}
if(backgroundColorPane != null) {
backgroundColorPane.addSelectChangeListener(colorChangeListener);
}
}
protected String titleOfTypePane() {
return Inter.getLocText("Background-Pattern");
}
protected LayoutManager layoutOfTypePane(int nColumn) {
return FRGUIPaneFactory.createNColumnGridLayout(nColumn);
}
protected void setChildrenOfTypePane(JPanel typePane2) {
ButtonGroup patternButtonGroup = new ButtonGroup();
patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT];
for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) {
patternButtonArray[i] = new PatternButton(i);
patternButtonGroup.add(patternButtonArray[i]);
typePane2.add(patternButtonArray[i]);
}
}
protected void setChildrenOfContentPane(JPanel contentPane) {
// colors
JPanel colorPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Colors"));
contentPane.add(colorPane);
foregroundColorPane = new ColorSelectBox(80);
backgroundColorPane = new ColorSelectBox(80);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
colorPane.add(Box.createHorizontalStrut(2));
colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground")
+ ":", foregroundColorPane));
colorPane.add(Box.createHorizontalStrut(8));
colorPane.add(this.createLabelColorPane(Inter.getLocText("Background")
+ ":", backgroundColorPane));
}
private JPanel createLabelColorPane(String text,
ColorSelectBox colorPane) {
JPanel labelColorPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
labelColorPane.add(new UILabel(text));
labelColorPane.add(colorPane);
return labelColorPane;
}
public void populate(Background background) {
if (background != null && background instanceof PatternBackground) {
PatternBackground patternBackground = (PatternBackground) background;
int patternIndex = patternBackground.getPatternIndex();
if (patternIndex >= 0
&& patternIndex < this.patternButtonArray.length) {
this.patternButtonArray[patternIndex].setSelected(true);
this.patternIndex = patternIndex;
} else {
this.patternIndex = 0;
}
foregroundColorPane.setSelectObject(patternBackground.getForeground());
backgroundColorPane.setSelectObject(patternBackground.getBackground());
} else {
patternIndex = 0;
this.patternButtonArray[0].setSelected(true);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
}
}
public Background update() throws Exception {
return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject());
}
public void addChangeListener(ChangeListener changeListener) {
foregroundColorPane.addSelectChangeListener(changeListener);
backgroundColorPane.addSelectChangeListener(changeListener);
for (int i = 0; i < this.patternButtonArray.length; i++) {
this.patternButtonArray[i].addChangeListener(changeListener);
}
}
// Foreground or Background changed.
ChangeListener colorChangeListener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
for (int i = 0; i < patternButtonArray.length; i++) {
patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject());
patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject());
}
PatternBackgroundPane.this.repaint();// repaint
}
};
/**
* Pattern type button.
*/
class PatternButton extends JToggleButton implements ActionListener {
public PatternButton(int pIndex) {
this.pIndex = pIndex;
this.addActionListener(this);
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
this.setBorder(null);
this.patternBackground = new PatternBackground(this.pIndex,
Color.lightGray, Color.black);
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0,
d.width - 1, d.height - 1));
if (this.pIndex == patternIndex) {// it's selected.
g2d.setPaint(new Color(255, 51, 0));
} else {
g2d.setPaint(Color.gray);
}
GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
}
public Dimension getPreferredSize() {
return new Dimension(24, 24);
}
public void setPatternForeground(Color foreground) {
this.patternBackground.setForeground(foreground);
}
public void setPatternBackground(Color background) {
this.patternBackground.setBackground(background);
}
/**
* set Pattern index.
*/
public void actionPerformed(ActionEvent evt) {
PatternBackgroundPane.this.patternIndex = pIndex;
fireChagneListener();
PatternBackgroundPane.this.repaint();// repaint
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
private int pIndex = 0;
private PatternBackground patternBackground;
}
}
/**
* Image background pane.
*/
private static class ImageBackgroundPane extends BackgroundSettingPane {
private ImagePreviewPane previewPane = null;
private Style imageStyle = null;
private ChangeListener changeListener = null;
private ImageFileChooser imageFileChooser = null;
private UILabel imageSizeLabel = new UILabel();
private JRadioButton defaultRadioButton = null;
private JRadioButton tiledRadioButton = null;
private JRadioButton extendRadioButton = null;
private JRadioButton adjustRadioButton = null;
public ImageBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
// preview pane
JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
this.add(previewContainerPane, BorderLayout.CENTER);
JPanel previewOwnerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Preview"));
previewOwnerPane.setLayout(new BorderLayout());
previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER);
previewPane = new ImagePreviewPane();
previewOwnerPane.add(new JScrollPane(previewPane));
previewPane.addChangeListener(imageSizeChangeListener);
JPanel selectFilePane = FRGUIPaneFactory.createBorderLayout_L_Pane();
previewContainerPane.add(selectFilePane, BorderLayout.EAST);
selectFilePane.setBorder(BorderFactory.createEmptyBorder(8, 2, 4, 0));
UIButton selectPictureButton = new UIButton(
Inter.getLocText("Image-Select_Picture"));
selectFilePane.add(selectPictureButton, BorderLayout.NORTH);
selectPictureButton.setMnemonic('S');
selectPictureButton.addActionListener(selectPictureActionListener);
JPanel layoutPane=FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane();
selectFilePane.add(layoutPane, BorderLayout.CENTER);
//布局
defaultRadioButton = new UIRadioButton(Inter.getLocText("Default"));
tiledRadioButton = new UIRadioButton(Inter.getLocText("Image-Titled"));
extendRadioButton = new UIRadioButton(Inter.getLocText("Image-Extend"));
adjustRadioButton = new UIRadioButton(Inter.getLocText("Image-Adjust"));
defaultRadioButton.addActionListener(layoutActionListener);
tiledRadioButton.addActionListener(layoutActionListener);
extendRadioButton.addActionListener(layoutActionListener);
adjustRadioButton.addActionListener(layoutActionListener);
JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15));
jp.add(defaultRadioButton);
jp.add(tiledRadioButton);
if(!isBrowserBackgroundPane){
jp.add(extendRadioButton);
jp.add(adjustRadioButton);
}
layoutPane.add(jp);
ButtonGroup layoutBG = new ButtonGroup();
layoutBG.add(defaultRadioButton);
layoutBG.add(tiledRadioButton);
layoutBG.add(extendRadioButton);
layoutBG.add(adjustRadioButton);
defaultRadioButton.setSelected(true);
// init image file chooser.
imageFileChooser = new ImageFileChooser();
imageFileChooser.setMultiSelectionEnabled(false);
}
/**
* Select picture.
*/
ActionListener selectPictureActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this);
if (returnVal != JFileChooser.CANCEL_OPTION) {
File selectedFile = imageFileChooser.getSelectedFile();
if (selectedFile != null && selectedFile.isFile()) {
Image image = BaseUtils.readImage(selectedFile.getPath());
CoreGraphHelper.waitForImage(image);
previewPane.setImage(image);
setImageStyle();
previewPane.setImageStyle(imageStyle);
previewPane.repaint();
} else {
previewPane.setImage(null);
}
}
fireChagneListener();
}
};
private void setImageStyle(){
if(tiledRadioButton.isSelected()){
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED);
}else if(adjustRadioButton.isSelected()){
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST);
}else if(extendRadioButton.isSelected()){
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND);
}else{
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER);
}
}
ActionListener layoutActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
setImageStyle();
changeImageStyle();
}
private void changeImageStyle() {
previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle);
previewPane.repaint();
}
};
public void populate(Background background) {
if (background instanceof ImageBackground) {
ImageBackground imageBackground = (ImageBackground) background;
if (imageBackground.getLayout() == Constants.IMAGE_CENTER) {
defaultRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER);
}else if(imageBackground.getLayout() == Constants.IMAGE_EXTEND){
extendRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND);
}else if(imageBackground.getLayout() == Constants.IMAGE_ADJUST){
adjustRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST);
}else {
tiledRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED);
}
previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle);
if (imageBackground.getImage() != null) {
previewPane.setImage(imageBackground.getImage());
imageSizeLabel.setText(previewPane.getImage().getWidth(null)
+ " X " + previewPane.getImage().getHeight(null));
}
if (imageBackground.getImage() != null) {
previewPane.setImage(imageBackground.getImage());
}
} else {
previewPane.setImage(null);
tiledRadioButton.setSelected(true);
imageSizeLabel.setText("");
}
fireChagneListener();
}
public Background update() throws Exception {
ImageBackground imageBackground = new ImageBackground(previewPane.getImage());
setImageStyle();
imageBackground.setLayout(imageStyle.getImageLayout());
return imageBackground;
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
ChangeListener imageSizeChangeListener = new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
Image image = ((ImagePreviewPane) evt.getSource()).getImage();
if (image == null) {
imageSizeLabel.setText("");
} else {
imageSizeLabel.setText(Inter.getLocText(new String[] {"Size", "px"}, new String[] {": " + image.getWidth(null) + "x" + image.getHeight(null)}));
}
}
};
}
public static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{
TextureBackground.NEWSPRINT_TEXTURE_PAINT,
TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT,
TextureBackground.PARCHMENT_TEXTURE_PAINT,
TextureBackground.STATIONERY_TEXTURE_PAINT,
TextureBackground.GREEN_MARBLE_TEXTURE_PAINT,
TextureBackground.WHITE_MARBLE_TEXTURE_PAINT,
TextureBackground.BROWN_MARBLE_TEXTURE_PAINT,
TextureBackground.GRANITE_TEXTURE_PAINT,
TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT,
TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT,
TextureBackground.PURPLE_MESH_TEXTURE_PAINT,
TextureBackground.BOUQUET_TEXTURE_PAINT,
TextureBackground.PAPYRUS_TEXTURE_PAINT,
TextureBackground.CANVAS_TEXTURE_PAINT,
TextureBackground.DENIM_TEXTURE_PAINT,
TextureBackground.WOVEN_MAT_TEXTURE_PAINT,
TextureBackground.WATER_DROPLETS_TEXTURE_PAINT,
TextureBackground.PAPER_BAG_TEXTURE_PAINT,
TextureBackground.FISH_FOSSIL_TEXTURE_PAINT,
TextureBackground.SAND_TEXTURE_PAINT,
TextureBackground.CORK_TEXTURE_PAINT,
TextureBackground.WALNUT_TEXTURE_PAINT,
TextureBackground.OAK_TEXTURE_PAINT,
TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT};
private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{
Inter.getLocText("BackgroundTexture-Newsprint"),
Inter.getLocText("BackgroundTexture-RecycledPaper"),
Inter.getLocText("BackgroundTexture-Parchment"),
Inter.getLocText("BackgroundTexture-Stationery"),
Inter.getLocText("BackgroundTexture-GreenMarble"),
Inter.getLocText("BackgroundTexture-WhiteMarble"),
Inter.getLocText("BackgroundTexture-BrownMarble"),
Inter.getLocText("BackgroundTexture-Granite"),
Inter.getLocText("BackgroundTexture-BlueTissuePaper"),
Inter.getLocText("BackgroundTexture-PinkTissuePaper"),
Inter.getLocText("BackgroundTexture-PurpleMesh"),
Inter.getLocText("BackgroundTexture-Bouquet"),
Inter.getLocText("BackgroundTexture-Papyrus"),
Inter.getLocText("BackgroundTexture-Canvas"),
Inter.getLocText("BackgroundTexture-Denim"),
Inter.getLocText("BackgroundTexture-WovenMat"),
Inter.getLocText("BackgroundTexture-WaterDroplets"),
Inter.getLocText("BackgroundTexture-PaperBag"),
Inter.getLocText("BackgroundTexture-FishFossil"),
Inter.getLocText("BackgroundTexture-Sand"),
Inter.getLocText("BackgroundTexture-Cork"),
Inter.getLocText("BackgroundTexture-Walnut"),
Inter.getLocText("BackgroundTexture-Oak"),
Inter.getLocText("BackgroundTexture-MediumWood")
};
} }

47
designer_base/src/com/fr/design/style/background/BackgroundPane4Browser.java

@ -0,0 +1,47 @@
package com.fr.design.style.background;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.Background;
import com.fr.general.Inter;
/**
* Created by richie on 16/5/18.
*/
public class BackgroundPane4Browser extends BackgroundPane {
public BackgroundPane4Browser() {
super();
}
protected void initTabPane() {
int index = 0;
for (Class<? extends Background> key : BackgroundFactory.browserKindsOfKey()) {
BackgroundUIWrapper wrapper = BackgroundFactory.getWrapper(key);
wrapper.setIndex(index++);
tabbedPane.addTab(Inter.getLocText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane());
}
}
protected BackgroundDetailPane getTabItemPane(Background background, int index) {
BackgroundDetailPane quickPane = cacheMap.get(index);
if (quickPane == null) {
quickPane = BackgroundFactory.createBrowserIfAbsent(background == null ? null : background.getClass());
quickPane.addChangeListener(backgroundChangeListener);
cacheMap.put(index, quickPane);
}
tabbedPane.setComponentAt(index, quickPane);
tabbedPane.setSelectedIndex(index);
return quickPane;
}
protected BackgroundDetailPane getTabItemPaneByIndex(int index) {
BackgroundDetailPane quickPane = cacheMap.get(index);
if (quickPane == null) {
quickPane = BackgroundFactory.createBrowerIfAbsent(index);
tabbedPane.setComponentAt(index, quickPane);
cacheMap.put(index, quickPane);
quickPane.addChangeListener(backgroundChangeListener);
}
return quickPane;
}
}

5
designer_base/src/com/fr/design/style/background/BackgroundSelectPane.java

@ -13,7 +13,6 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane;
/** /**
* @author kunsnat E-mail:kunsnat@gmail.com * @author kunsnat E-mail:kunsnat@gmail.com
@ -26,9 +25,9 @@ public abstract class BackgroundSelectPane extends BasicPane {
private Background background; private Background background;
private ArrayList<ChangeListener> listenerList = new ArrayList<ChangeListener>(); private ArrayList<ChangeListener> listenerList = new ArrayList<ChangeListener>();
public abstract BackgroundSettingPane getShowPane(double preWidth); public abstract BackgroundDetailPane getShowPane(double preWidth);
protected void initBackgroundShowPane(final BackgroundSettingPane backgroundPane) { protected void initBackgroundShowPane(final BackgroundDetailPane backgroundPane) {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
backgroundPane.addChangeListener(new ChangeListener() { backgroundPane.addChangeListener(new ChangeListener() {

49
designer_base/src/com/fr/design/style/background/BackgroundUIWrapper.java

@ -0,0 +1,49 @@
package com.fr.design.style.background;
/**
* Created by richie on 16/5/18.
*/
public class BackgroundUIWrapper {
public static BackgroundUIWrapper create() {
return new BackgroundUIWrapper();
}
private int index = -1;
private String title;
private Class<? extends BackgroundDetailPane> clazz;
private BackgroundUIWrapper() {
}
public Class<? extends BackgroundDetailPane> getType() {
return clazz;
}
public BackgroundUIWrapper setType(Class<? extends BackgroundDetailPane> clazz) {
this.clazz = clazz;
return this;
}
public String getTitle() {
return title;
}
public BackgroundUIWrapper setTitle(String title) {
this.title = title;
return this;
}
public int getIndex() {
return index;
}
public BackgroundUIWrapper setIndex(int index) {
if (this.index == -1) {
this.index = index;
}
return this;
}
}

6
designer_base/src/com/fr/design/style/background/gradient/GradientPane.java → designer_base/src/com/fr/design/style/background/gradient/GradientBackgroundPane.java

@ -18,20 +18,20 @@ import com.fr.base.background.GradientBackground;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; import com.fr.design.style.background.BackgroundDetailPane;
/** /**
* 渐变色的面板不是很pp面板应用显得繁琐有写可以写成控件类型比如色彩选择的可以做得花哨点 * 渐变色的面板不是很pp面板应用显得繁琐有写可以写成控件类型比如色彩选择的可以做得花哨点
* @author ben * @author ben
*/ */
public class GradientPane extends BackgroundSettingPane { public class GradientBackgroundPane extends BackgroundDetailPane {
private static final long serialVersionUID = -6854603990673031897L; private static final long serialVersionUID = -6854603990673031897L;
private UIRadioButton left2right, top2bottom; private UIRadioButton left2right, top2bottom;
private GradientBar gradientBar; private GradientBar gradientBar;
private ChangeListener changeListener = null; private ChangeListener changeListener = null;
public GradientPane() { public GradientBackgroundPane() {
// bug 5452 简化GradientPane // bug 5452 简化GradientPane
JPanel jpanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText(new String[]{"Gradient-Color", "Set"})); JPanel jpanel = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText(new String[]{"Gradient-Color", "Set"}));

46
designer_base/src/com/fr/design/style/background/impl/BPane.java

@ -0,0 +1,46 @@
package com.fr.design.style.background.impl;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundDetailPane;
import javax.swing.*;
import java.awt.*;
/**
* Created by richie on 16/5/18.
*/
public abstract class BPane extends BackgroundDetailPane {
public BPane(int nColumn) {
this.initComponents(nColumn);
}
private void initComponents(int nColumn) {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane();
this.add(contentPane, BorderLayout.NORTH);
// contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
// type type.
JPanel typePane = FRGUIPaneFactory.createTitledBorderPane(titleOfTypePane());
contentPane.add(typePane);
JPanel typePane2 = new JPanel();
typePane.add(typePane2);
typePane2.setLayout(layoutOfTypePane(nColumn));
setChildrenOfTypePane(typePane2);
setChildrenOfContentPane(contentPane);
}
protected abstract String titleOfTypePane();
protected abstract LayoutManager layoutOfTypePane(int nColumn);
protected abstract void setChildrenOfTypePane(JPanel typePane2);
protected void setChildrenOfContentPane(JPanel contentPane) {
}
}

42
designer_base/src/com/fr/design/style/background/impl/ColorBackgroundPane.java

@ -0,0 +1,42 @@
package com.fr.design.style.background.impl;
import com.fr.base.background.ColorBackground;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.design.style.color.DetailColorSelectPane;
import com.fr.general.Background;
import javax.swing.event.ChangeListener;
import java.awt.*;
/**
* Color background pane.
*/
public class ColorBackgroundPane extends BackgroundDetailPane {
private DetailColorSelectPane detailColorSelectPane;
public ColorBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
detailColorSelectPane = new DetailColorSelectPane();
this.add(detailColorSelectPane, BorderLayout.CENTER);
}
public void populate(Background background) {
if (background instanceof ColorBackground) {
ColorBackground colorBackgroud = (ColorBackground) background;
this.detailColorSelectPane.populate(colorBackgroud.getColor());
} else {
this.detailColorSelectPane.populate(Color.white);
}
}
public Background update() throws Exception {
return ColorBackground.getInstance(this.detailColorSelectPane.update());
}
public void addChangeListener(ChangeListener changeListener) {
detailColorSelectPane.addChangeListener(changeListener);
}
}

230
designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane.java

@ -0,0 +1,230 @@
package com.fr.design.style.background.impl;
import com.fr.base.BaseUtils;
import com.fr.base.Style;
import com.fr.base.background.ImageBackground;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.design.style.background.image.ImageFileChooser;
import com.fr.design.style.background.image.ImagePreviewPane;
import com.fr.general.Background;
import com.fr.general.Inter;
import com.fr.stable.Constants;
import com.fr.stable.CoreGraphHelper;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
/**
* Image background pane.
*/
public class ImageBackgroundPane extends BackgroundDetailPane {
private ImagePreviewPane previewPane = null;
private Style imageStyle = null;
private ChangeListener changeListener = null;
private ImageFileChooser imageFileChooser = null;
private UILabel imageSizeLabel = new UILabel();
protected JRadioButton defaultRadioButton = null;
protected JRadioButton tiledRadioButton = null;
private JRadioButton extendRadioButton = null;
private JRadioButton adjustRadioButton = null;
public ImageBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
// preview pane
JPanel previewContainerPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
this.add(previewContainerPane, BorderLayout.CENTER);
JPanel previewOwnerPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Preview"));
previewOwnerPane.setLayout(new BorderLayout());
previewContainerPane.add(previewOwnerPane, BorderLayout.CENTER);
previewPane = new ImagePreviewPane();
previewOwnerPane.add(new JScrollPane(previewPane));
previewPane.addChangeListener(imageSizeChangeListener);
JPanel selectFilePane = FRGUIPaneFactory.createBorderLayout_L_Pane();
previewContainerPane.add(selectFilePane, BorderLayout.EAST);
selectFilePane.setBorder(BorderFactory.createEmptyBorder(8, 2, 4, 0));
UIButton selectPictureButton = new UIButton(
Inter.getLocText("Image-Select_Picture"));
selectFilePane.add(selectPictureButton, BorderLayout.NORTH);
selectPictureButton.setMnemonic('S');
selectPictureButton.addActionListener(selectPictureActionListener);
JPanel layoutPane = FRGUIPaneFactory.createMediumHGapHighTopFlowInnerContainer_M_Pane();
selectFilePane.add(layoutPane, BorderLayout.CENTER);
//布局
defaultRadioButton = new UIRadioButton(Inter.getLocText("Default"));
tiledRadioButton = new UIRadioButton(Inter.getLocText("Image-Titled"));
extendRadioButton = new UIRadioButton(Inter.getLocText("Image-Extend"));
adjustRadioButton = new UIRadioButton(Inter.getLocText("Image-Adjust"));
defaultRadioButton.addActionListener(layoutActionListener);
tiledRadioButton.addActionListener(layoutActionListener);
extendRadioButton.addActionListener(layoutActionListener);
adjustRadioButton.addActionListener(layoutActionListener);
JPanel jp = new JPanel(new GridLayout(4, 1, 15, 15));
for (JRadioButton button : imageLayoutButtons()) {
jp.add(button);
}
layoutPane.add(jp);
ButtonGroup layoutBG = new ButtonGroup();
layoutBG.add(defaultRadioButton);
layoutBG.add(tiledRadioButton);
layoutBG.add(extendRadioButton);
layoutBG.add(adjustRadioButton);
defaultRadioButton.setSelected(true);
// init image file chooser.
imageFileChooser = new ImageFileChooser();
imageFileChooser.setMultiSelectionEnabled(false);
}
protected JRadioButton[] imageLayoutButtons() {
return new JRadioButton[]{
defaultRadioButton,
tiledRadioButton,
extendRadioButton,
adjustRadioButton
};
}
/**
* Select picture.
*/
ActionListener selectPictureActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int returnVal = imageFileChooser.showOpenDialog(ImageBackgroundPane.this);
if (returnVal != JFileChooser.CANCEL_OPTION) {
File selectedFile = imageFileChooser.getSelectedFile();
if (selectedFile != null && selectedFile.isFile()) {
Image image = BaseUtils.readImage(selectedFile.getPath());
CoreGraphHelper.waitForImage(image);
previewPane.setImage(image);
setImageStyle();
previewPane.setImageStyle(imageStyle);
previewPane.repaint();
} else {
previewPane.setImage(null);
}
}
fireChagneListener();
}
};
private void setImageStyle() {
if (tiledRadioButton.isSelected()) {
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED);
} else if (adjustRadioButton.isSelected()) {
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST);
} else if (extendRadioButton.isSelected()) {
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND);
} else {
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER);
}
}
ActionListener layoutActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
setImageStyle();
changeImageStyle();
}
private void changeImageStyle() {
previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle);
previewPane.repaint();
}
};
public void populate(Background background) {
if (background instanceof ImageBackground) {
ImageBackground imageBackground = (ImageBackground) background;
if (imageBackground.getLayout() == Constants.IMAGE_CENTER) {
defaultRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_CENTER);
} else if (imageBackground.getLayout() == Constants.IMAGE_EXTEND) {
extendRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_EXTEND);
} else if (imageBackground.getLayout() == Constants.IMAGE_ADJUST) {
adjustRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_ADJUST);
} else {
tiledRadioButton.setSelected(true);
imageStyle = Style.DEFAULT_STYLE.deriveImageLayout(Constants.IMAGE_TILED);
}
previewPane.setImageStyle(ImageBackgroundPane.this.imageStyle);
if (imageBackground.getImage() != null) {
previewPane.setImage(imageBackground.getImage());
imageSizeLabel.setText(previewPane.getImage().getWidth(null)
+ " X " + previewPane.getImage().getHeight(null));
}
if (imageBackground.getImage() != null) {
previewPane.setImage(imageBackground.getImage());
}
} else {
previewPane.setImage(null);
tiledRadioButton.setSelected(true);
imageSizeLabel.setText("");
}
fireChagneListener();
}
public Background update() throws Exception {
ImageBackground imageBackground = new ImageBackground(previewPane.getImage());
setImageStyle();
imageBackground.setLayout(imageStyle.getImageLayout());
return imageBackground;
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
ChangeListener imageSizeChangeListener = new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
Image image = ((ImagePreviewPane) evt.getSource()).getImage();
if (image == null) {
imageSizeLabel.setText("");
} else {
imageSizeLabel.setText(Inter.getLocText(new String[]{"Size", "px"}, new String[]{": " + image.getWidth(null) + "x" + image.getHeight(null)}));
}
}
};
}

25
designer_base/src/com/fr/design/style/background/impl/ImageBackgroundPane4Browser.java

@ -0,0 +1,25 @@
package com.fr.design.style.background.impl;
import com.fr.stable.ArrayUtils;
import javax.swing.*;
/**
* Created by richie on 16/5/18.
*/
public class ImageBackgroundPane4Browser extends ImageBackgroundPane {
public ImageBackgroundPane4Browser() {
super();
}
@Override
protected JRadioButton[] imageLayoutButtons() {
return (JRadioButton[]) ArrayUtils.addAll(super.imageLayoutButtons(), new JRadioButton[] {
defaultRadioButton,
tiledRadioButton,
});
}
}

39
designer_base/src/com/fr/design/style/background/impl/NullBackgroundPane.java

@ -0,0 +1,39 @@
package com.fr.design.style.background.impl;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Background;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeListener;
/**
* Null background pane.
*/
public class NullBackgroundPane extends BackgroundDetailPane {
public NullBackgroundPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
UILabel centerLabel = new UILabel(
Inter.getLocText("Background-Background_is_NULL") + "...");
this.add(centerLabel);
centerLabel.setHorizontalAlignment(SwingConstants.CENTER);
centerLabel.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor()));
}
public void populate(Background background) {
// do nothing.
}
public Background update() throws Exception {
return null;
}
public void addChangeListener(ChangeListener changeListener) {
// do nothing.
}
}

208
designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPane.java

@ -0,0 +1,208 @@
package com.fr.design.style.background.impl;
import com.fr.base.GraphHelper;
import com.fr.base.background.PatternBackground;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.color.ColorSelectBox;
import com.fr.general.Background;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
/**
* Pattern background pane.
*/
public class PatternBackgroundPane extends BPane {
private int patternIndex = 0; // pattern setIndex.
protected ColorSelectBox foregroundColorPane;
protected ColorSelectBox backgroundColorPane;
private PatternButton[] patternButtonArray;
public PatternBackgroundPane() {
super(12);
foregroundColorPane.addSelectChangeListener(colorChangeListener);
backgroundColorPane.addSelectChangeListener(colorChangeListener);
}
public PatternBackgroundPane(int nColumn) {
super(nColumn);
if(foregroundColorPane != null) {
foregroundColorPane.addSelectChangeListener(colorChangeListener);
}
if(backgroundColorPane != null) {
backgroundColorPane.addSelectChangeListener(colorChangeListener);
}
}
protected String titleOfTypePane() {
return Inter.getLocText("Background-Pattern");
}
protected LayoutManager layoutOfTypePane(int nColumn) {
return FRGUIPaneFactory.createNColumnGridLayout(nColumn);
}
protected void setChildrenOfTypePane(JPanel typePane2) {
ButtonGroup patternButtonGroup = new ButtonGroup();
patternButtonArray = new PatternButton[PatternBackground.PATTERN_COUNT];
for (int i = 0; i < PatternBackground.PATTERN_COUNT; i++) {
patternButtonArray[i] = new PatternButton(i);
patternButtonGroup.add(patternButtonArray[i]);
typePane2.add(patternButtonArray[i]);
}
}
protected void setChildrenOfContentPane(JPanel contentPane) {
// colors
JPanel colorPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Colors"));
contentPane.add(colorPane);
foregroundColorPane = new ColorSelectBox(80);
backgroundColorPane = new ColorSelectBox(80);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
colorPane.add(Box.createHorizontalStrut(2));
colorPane.add(this.createLabelColorPane(Inter.getLocText("Foreground")
+ ":", foregroundColorPane));
colorPane.add(Box.createHorizontalStrut(8));
colorPane.add(this.createLabelColorPane(Inter.getLocText("Background")
+ ":", backgroundColorPane));
}
private JPanel createLabelColorPane(String text,
ColorSelectBox colorPane) {
JPanel labelColorPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
labelColorPane.add(new UILabel(text));
labelColorPane.add(colorPane);
return labelColorPane;
}
public void populate(Background background) {
if (background != null && background instanceof PatternBackground) {
PatternBackground patternBackground = (PatternBackground) background;
int patternIndex = patternBackground.getPatternIndex();
if (patternIndex >= 0
&& patternIndex < this.patternButtonArray.length) {
this.patternButtonArray[patternIndex].setSelected(true);
this.patternIndex = patternIndex;
} else {
this.patternIndex = 0;
}
foregroundColorPane.setSelectObject(patternBackground.getForeground());
backgroundColorPane.setSelectObject(patternBackground.getBackground());
} else {
patternIndex = 0;
this.patternButtonArray[0].setSelected(true);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
}
}
public Background update() throws Exception {
return new PatternBackground(patternIndex, foregroundColorPane.getSelectObject(), backgroundColorPane.getSelectObject());
}
public void addChangeListener(ChangeListener changeListener) {
foregroundColorPane.addSelectChangeListener(changeListener);
backgroundColorPane.addSelectChangeListener(changeListener);
for (int i = 0; i < this.patternButtonArray.length; i++) {
this.patternButtonArray[i].addChangeListener(changeListener);
}
}
// Foreground or Background changed.
ChangeListener colorChangeListener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
for (int i = 0; i < patternButtonArray.length; i++) {
patternButtonArray[i].setPatternForeground(foregroundColorPane.getSelectObject());
patternButtonArray[i].setPatternBackground(backgroundColorPane.getSelectObject());
}
PatternBackgroundPane.this.repaint();// repaint
}
};
/**
* Pattern type button.
*/
class PatternButton extends JToggleButton implements ActionListener {
public PatternButton(int pIndex) {
this.pIndex = pIndex;
this.addActionListener(this);
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
this.setBorder(null);
this.patternBackground = new PatternBackground(this.pIndex,
Color.lightGray, Color.black);
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
this.patternBackground.paint(g2d, new Rectangle2D.Double(0, 0,
d.width - 1, d.height - 1));
if (this.pIndex == patternIndex) {// it's selected.
g2d.setPaint(new Color(255, 51, 0));
} else {
g2d.setPaint(Color.gray);
}
GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
}
public Dimension getPreferredSize() {
return new Dimension(24, 24);
}
public void setPatternForeground(Color foreground) {
this.patternBackground.setForeground(foreground);
}
public void setPatternBackground(Color background) {
this.patternBackground.setBackground(background);
}
/**
* set Pattern setIndex.
*/
public void actionPerformed(ActionEvent evt) {
PatternBackgroundPane.this.patternIndex = pIndex;
fireChagneListener();
PatternBackgroundPane.this.repaint();// repaint
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
private int pIndex = 0;
private PatternBackground patternBackground;
}
}

24
designer_base/src/com/fr/design/style/background/impl/PatternBackgroundPaneNoFore.java

@ -0,0 +1,24 @@
package com.fr.design.style.background.impl;
import com.fr.design.style.color.ColorSelectBox;
import javax.swing.*;
import java.awt.*;
/**
* Created by richie on 16/5/18.
*/
public class PatternBackgroundPaneNoFore extends PatternBackgroundPane {
public PatternBackgroundPaneNoFore(int nColumn) {
super(nColumn);
}
// 重载 不加载两个前后按钮
protected void setChildrenOfContentPane(JPanel contentPane) {
foregroundColorPane = new ColorSelectBox(80);
backgroundColorPane = new ColorSelectBox(80);
foregroundColorPane.setSelectObject(Color.lightGray);
backgroundColorPane.setSelectObject(Color.black);
}
}

197
designer_base/src/com/fr/design/style/background/impl/TextureBackgroundPane.java

@ -0,0 +1,197 @@
package com.fr.design.style.background.impl;
import com.fr.base.GraphHelper;
import com.fr.base.background.TextureBackground;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.Background;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
/**
* Texture background pane. TODO kunsnat: 拆出去. 真特么的长..
*/
public class TextureBackgroundPane extends BPane {
private static final TexturePaint[] EMBED_TEXTURE_PAINT_ARRAY = new TexturePaint[]{
TextureBackground.NEWSPRINT_TEXTURE_PAINT,
TextureBackground.RECYCLED_PAPER_TEXTURE_PAINT,
TextureBackground.PARCHMENT_TEXTURE_PAINT,
TextureBackground.STATIONERY_TEXTURE_PAINT,
TextureBackground.GREEN_MARBLE_TEXTURE_PAINT,
TextureBackground.WHITE_MARBLE_TEXTURE_PAINT,
TextureBackground.BROWN_MARBLE_TEXTURE_PAINT,
TextureBackground.GRANITE_TEXTURE_PAINT,
TextureBackground.BLUE_TISSUE_PAPER_TEXTURE_PAINT,
TextureBackground.PINK_TISSUE_PAPER_TEXTURE_PAINT,
TextureBackground.PURPLE_MESH_TEXTURE_PAINT,
TextureBackground.BOUQUET_TEXTURE_PAINT,
TextureBackground.PAPYRUS_TEXTURE_PAINT,
TextureBackground.CANVAS_TEXTURE_PAINT,
TextureBackground.DENIM_TEXTURE_PAINT,
TextureBackground.WOVEN_MAT_TEXTURE_PAINT,
TextureBackground.WATER_DROPLETS_TEXTURE_PAINT,
TextureBackground.PAPER_BAG_TEXTURE_PAINT,
TextureBackground.FISH_FOSSIL_TEXTURE_PAINT,
TextureBackground.SAND_TEXTURE_PAINT,
TextureBackground.CORK_TEXTURE_PAINT,
TextureBackground.WALNUT_TEXTURE_PAINT,
TextureBackground.OAK_TEXTURE_PAINT,
TextureBackground.MEDIUM_WOOD_TEXTURE_PAINT};
private static final String[] EMBED_TEXTURE_PAINT_DES_ARRAY = new String[]{
Inter.getLocText("BackgroundTexture-Newsprint"),
Inter.getLocText("BackgroundTexture-RecycledPaper"),
Inter.getLocText("BackgroundTexture-Parchment"),
Inter.getLocText("BackgroundTexture-Stationery"),
Inter.getLocText("BackgroundTexture-GreenMarble"),
Inter.getLocText("BackgroundTexture-WhiteMarble"),
Inter.getLocText("BackgroundTexture-BrownMarble"),
Inter.getLocText("BackgroundTexture-Granite"),
Inter.getLocText("BackgroundTexture-BlueTissuePaper"),
Inter.getLocText("BackgroundTexture-PinkTissuePaper"),
Inter.getLocText("BackgroundTexture-PurpleMesh"),
Inter.getLocText("BackgroundTexture-Bouquet"),
Inter.getLocText("BackgroundTexture-Papyrus"),
Inter.getLocText("BackgroundTexture-Canvas"),
Inter.getLocText("BackgroundTexture-Denim"),
Inter.getLocText("BackgroundTexture-WovenMat"),
Inter.getLocText("BackgroundTexture-WaterDroplets"),
Inter.getLocText("BackgroundTexture-PaperBag"),
Inter.getLocText("BackgroundTexture-FishFossil"),
Inter.getLocText("BackgroundTexture-Sand"),
Inter.getLocText("BackgroundTexture-Cork"),
Inter.getLocText("BackgroundTexture-Walnut"),
Inter.getLocText("BackgroundTexture-Oak"),
Inter.getLocText("BackgroundTexture-MediumWood")
};
private TexturePaint texturePaint;
private TextureButton[] textureButtonArray;
public TextureBackgroundPane() {
super(8);// 默认的.
}
public TextureBackgroundPane(int colum) {
super(colum);// 自定义的.
}
protected LayoutManager layoutOfTypePane(int nColumn) {
return FRGUIPaneFactory.createNColumnGridLayout(nColumn);
}
protected String titleOfTypePane() {
return Inter.getLocText("Background-Texture");
}
protected void setChildrenOfTypePane(JPanel typePane2) {
ButtonGroup patternButtonGroup = new ButtonGroup();
textureButtonArray = new TextureButton[EMBED_TEXTURE_PAINT_ARRAY.length];
for (int i = 0; i < EMBED_TEXTURE_PAINT_ARRAY.length; i++) {
textureButtonArray[i] = new TextureButton(
EMBED_TEXTURE_PAINT_ARRAY[i], EMBED_TEXTURE_PAINT_DES_ARRAY[i]);
patternButtonGroup.add(textureButtonArray[i]);
typePane2.add(textureButtonArray[i]);
}
}
public void populate(Background background) {
if (background instanceof TextureBackground) {
TextureBackground textureBackground = (TextureBackground) background;
this.texturePaint = textureBackground.getTexturePaint();
for (int i = 0; i < textureButtonArray.length; i++) {
if (ComparatorUtils.equals(textureButtonArray[i].getTexturePaint(), this.texturePaint)) {
textureButtonArray[i].setSelected(true);
break;
}
}
} else {
this.textureButtonArray[0].setSelected(true);
this.texturePaint = textureButtonArray[0].getTexturePaint();
}
}
public Background update() throws Exception {
return new TextureBackground(this.texturePaint);
}
public void addChangeListener(ChangeListener changeListener) {
for (int i = 0; i < this.textureButtonArray.length; i++) {
this.textureButtonArray[i].addChangeListener(changeListener);
}
}
/**
* Texture type button.
*/
class TextureButton extends JToggleButton implements ActionListener {
private TexturePaint buttonTexturePaint;
public TextureButton(TexturePaint buttonTexturePaint, String tooltip) {
this.buttonTexturePaint = buttonTexturePaint;
this.setToolTipText(tooltip);
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
this.addActionListener(this);
this.setBorder(null);
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Dimension d = getSize();
g2d.setPaint(this.buttonTexturePaint);
GraphHelper.fill(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
if (ComparatorUtils.equals(texturePaint, this.buttonTexturePaint)) {// it's
// selected.
g2d.setPaint(Color.black);
} else {
g2d.setPaint(Color.gray);
}
GraphHelper.draw(g2d, new Rectangle2D.Double(0, 0, d.width - 1,
d.height - 1));
}
public Dimension getPreferredSize() {
return new Dimension(36, 32);
}
public TexturePaint getTexturePaint() {
return this.buttonTexturePaint;
}
/**
* set Pattern setIndex.
*/
public void actionPerformed(ActionEvent evt) {
TextureBackgroundPane.this.texturePaint = this.getTexturePaint();
fireChagneListener();
TextureBackgroundPane.this.repaint(); // repaint.
}
public void addChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
private void fireChagneListener() {
if (this.changeListener != null) {
ChangeEvent evt = new ChangeEvent(this);
this.changeListener.stateChanged(evt);
}
}
}
}

6
designer_base/src/com/fr/design/style/background/pattern/PatternSelectPane.java

@ -1,8 +1,8 @@
package com.fr.design.style.background.pattern; package com.fr.design.style.background.pattern;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.design.style.background.BackgroundPane.PatternBackgroundPaneNoFore; import com.fr.design.style.background.impl.PatternBackgroundPaneNoFore;
import com.fr.design.style.background.BackgroundSelectPane; import com.fr.design.style.background.BackgroundSelectPane;
@ -20,7 +20,7 @@ public class PatternSelectPane extends BackgroundSelectPane {
} }
@Override @Override
public BackgroundSettingPane getShowPane(double preWidth) { public BackgroundDetailPane getShowPane(double preWidth) {
// 最少6个. 因为项目太多了. 会拉的很长 // 最少6个. 因为项目太多了. 会拉的很长
int column = Math.max((int)preWidth / 25, 6); int column = Math.max((int)preWidth / 25, 6);
return new PatternBackgroundPaneNoFore(column); return new PatternBackgroundPaneNoFore(column);

6
designer_base/src/com/fr/design/style/background/texture/TextureSelectPane.java

@ -1,8 +1,8 @@
package com.fr.design.style.background.texture; package com.fr.design.style.background.texture;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.design.style.background.BackgroundPane.BackgroundSettingPane; import com.fr.design.style.background.BackgroundDetailPane;
import com.fr.design.style.background.BackgroundPane.TextureBackgroundPane; import com.fr.design.style.background.impl.TextureBackgroundPane;
import com.fr.design.style.background.BackgroundSelectPane; import com.fr.design.style.background.BackgroundSelectPane;
@ -19,7 +19,7 @@ public class TextureSelectPane extends BackgroundSelectPane {
initBackgroundShowPane(getShowPane(preWidth)); initBackgroundShowPane(getShowPane(preWidth));
} }
public BackgroundSettingPane getShowPane(double preWidth) { public BackgroundDetailPane getShowPane(double preWidth) {
// 计算合适的列. 至少4个. 最多8个. // 计算合适的列. 至少4个. 最多8个.
int column = Math.max((int)preWidth / 40, 4); int column = Math.max((int)preWidth / 40, 4);
return new TextureBackgroundPane(column); return new TextureBackgroundPane(column);

36
designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java

@ -49,14 +49,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane
double[] columnSize = { p,f}; double[] columnSize = { p,f};
double[] rowSize = { p, p,p,p,p,p,p,p, p}; double[] rowSize = { p, p,p,p,p,p,p,p, p};
Component[][] components = new Component[][]{ Component[][] components = createComponents();
new Component[]{new BoldFontTextLabel(METER_NAME, SwingConstants.RIGHT), nameBox},
new Component[]{new BoldFontTextLabel(METER_VALUE, SwingConstants.RIGHT), valueBox},
new Component[]{new JSeparator(), null},
new Component[]{new BoldFontTextLabel(Inter.getLocText("Chart-Data_Filter"))},
new Component[]{filterPane, null}
} ;
JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize);
this.add(panel,BorderLayout.CENTER); this.add(panel,BorderLayout.CENTER);
@ -65,6 +58,16 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane
valueBox.addItemListener(tooltipListener); valueBox.addItemListener(tooltipListener);
} }
private Component[][] createComponents() {
return new Component[][]{
new Component[]{new BoldFontTextLabel(METER_NAME, SwingConstants.RIGHT), getNameComponent()},
new Component[]{new BoldFontTextLabel(METER_VALUE, SwingConstants.RIGHT), valueBox},
new Component[]{new JSeparator(), null},
new Component[]{new BoldFontTextLabel(Inter.getLocText("Chart-Data_Filter"))},
new Component[]{filterPane, null}
};
}
protected void refreshBoxListWithSelectTableData(List list) { protected void refreshBoxListWithSelectTableData(List list) {
refreshBoxItems(nameBox, list); refreshBoxItems(nameBox, list);
refreshBoxItems(valueBox, list); refreshBoxItems(valueBox, list);
@ -85,12 +88,17 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane
if(ob != null && ob.getSelectedChart().getFilterDefinition() instanceof MeterTableDefinition) { if(ob != null && ob.getSelectedChart().getFilterDefinition() instanceof MeterTableDefinition) {
MeterTableDefinition meter = (MeterTableDefinition)ob.getSelectedChart().getFilterDefinition(); MeterTableDefinition meter = (MeterTableDefinition)ob.getSelectedChart().getFilterDefinition();
nameBox.setSelectedItem(meter.getName()); populateNameComponent(meter.getName());
valueBox.setSelectedItem(meter.getValue()); valueBox.setSelectedItem(meter.getValue());
filterPane.populateBean(ob); filterPane.populateBean(ob);
} }
} }
protected void populateNameComponent(String name) {
nameBox.setSelectedItem(name);
}
/** /**
* 保存界面属性. * 保存界面属性.
*/ */
@ -99,12 +107,17 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane
MeterTableDefinition meter = new MeterTableDefinition(); MeterTableDefinition meter = new MeterTableDefinition();
ob.getSelectedChart().setFilterDefinition(meter); ob.getSelectedChart().setFilterDefinition(meter);
meter.setName(Utils.objectToString(nameBox.getSelectedItem())); updateNameComponent(meter);
meter.setValue(Utils.objectToString(valueBox.getSelectedItem())); meter.setValue(Utils.objectToString(valueBox.getSelectedItem()));
filterPane.updateBean(ob); filterPane.updateBean(ob);
} }
} }
protected void updateNameComponent(MeterTableDefinition meter) {
meter.setName(Utils.objectToString(nameBox.getSelectedItem()));
}
/** /**
* 重新布局整个面板 * 重新布局整个面板
*/ */
@ -113,4 +126,7 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane
} }
protected Component getNameComponent() {
return nameBox;
}
} }

12
designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundNoImagePane.java

@ -1,8 +1,8 @@
package com.fr.design.mainframe.chart.gui.style; package com.fr.design.mainframe.chart.gui.style;
import com.fr.design.gui.style.GradientPane; import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane; import com.fr.design.mainframe.backgroundpane.GradientBackgroundQuickPane;
import com.fr.design.mainframe.backgroundpane.NullBackgroundPane; import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane;
/** /**
* 背景界面, 无图片和纹理选项. * 背景界面, 无图片和纹理选项.
@ -16,8 +16,8 @@ public class ChartBackgroundNoImagePane extends ChartBackgroundPane {
} }
protected void initList() { protected void initList() {
paneList.add(new NullBackgroundPane()); paneList.add(new NullBackgroundQuickPane());
paneList.add(new ColorBackgroundPane()); paneList.add(new ColorBackgroundQuickPane());
paneList.add(new GradientPane(CHART_GRADIENT_WIDTH)); paneList.add(new GradientBackgroundQuickPane(CHART_GRADIENT_WIDTH));
} }
} }

22
designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartBackgroundPane.java

@ -4,13 +4,9 @@ import com.fr.chart.chartglyph.GeneralInfo;
import com.fr.design.gui.frpane.UINumberDragPane; import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.style.GradientPane;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.backgroundpane.BackgroundSettingPane; import com.fr.design.mainframe.backgroundpane.*;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundPane;
import com.fr.design.mainframe.backgroundpane.ImageBackgroundPane;
import com.fr.design.mainframe.backgroundpane.NullBackgroundPane;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.Inter; import com.fr.general.Inter;
@ -33,7 +29,7 @@ public class ChartBackgroundPane extends BasicPane{
private static final long serialVersionUID = 6955952013135176051L; private static final long serialVersionUID = 6955952013135176051L;
private static final double ALPHA_V = 100.0; private static final double ALPHA_V = 100.0;
protected static final int CHART_GRADIENT_WIDTH = 150; protected static final int CHART_GRADIENT_WIDTH = 150;
protected List<BackgroundSettingPane> paneList; protected List<BackgroundQuickPane> paneList;
private UIComboBox typeComboBox; private UIComboBox typeComboBox;
private UINumberDragPane transparent; private UINumberDragPane transparent;
@ -41,7 +37,7 @@ public class ChartBackgroundPane extends BasicPane{
public ChartBackgroundPane() { public ChartBackgroundPane() {
typeComboBox = new UIComboBox(); typeComboBox = new UIComboBox();
final CardLayout cardlayout = new CardLayout(); final CardLayout cardlayout = new CardLayout();
paneList = new ArrayList<BackgroundSettingPane>(); paneList = new ArrayList<BackgroundQuickPane>();
initList(); initList();
@ -54,7 +50,7 @@ public class ChartBackgroundPane extends BasicPane{
} }
}; };
for (int i = 0; i < paneList.size(); i++) { for (int i = 0; i < paneList.size(); i++) {
BackgroundSettingPane pane = paneList.get(i); BackgroundQuickPane pane = paneList.get(i);
typeComboBox.addItem(pane.title4PopupWindow()); typeComboBox.addItem(pane.title4PopupWindow());
centerPane.add(pane, pane.title4PopupWindow()); centerPane.add(pane, pane.title4PopupWindow());
} }
@ -89,10 +85,10 @@ public class ChartBackgroundPane extends BasicPane{
} }
protected void initList() { protected void initList() {
paneList.add(new NullBackgroundPane()); paneList.add(new NullBackgroundQuickPane());
paneList.add(new ColorBackgroundPane()); paneList.add(new ColorBackgroundQuickPane());
paneList.add(new ImageBackgroundPane()); paneList.add(new ImageBackgroundQuickPane());
paneList.add(new GradientPane(CHART_GRADIENT_WIDTH)); paneList.add(new GradientBackgroundQuickPane(CHART_GRADIENT_WIDTH));
} }
/** /**
@ -127,7 +123,7 @@ public class ChartBackgroundPane extends BasicPane{
double alpha = attr.getAlpha() * ALPHA_V; double alpha = attr.getAlpha() * ALPHA_V;
transparent.populateBean(alpha); transparent.populateBean(alpha);
for (int i = 0; i < paneList.size(); i++) { for (int i = 0; i < paneList.size(); i++) {
BackgroundSettingPane pane = paneList.get(i); BackgroundQuickPane pane = paneList.get(i);
if (pane.accept(background)) { if (pane.accept(background)) {
pane.populateBean(background); pane.populateBean(background);
typeComboBox.setSelectedIndex(i); typeComboBox.setSelectedIndex(i);

Loading…
Cancel
Save