yaoh.wu
6 years ago
3 changed files with 209 additions and 153 deletions
@ -0,0 +1,170 @@ |
|||||||
|
package com.fr.poly; |
||||||
|
|
||||||
|
import com.fr.base.BaseUtils; |
||||||
|
import com.fr.base.chart.BaseChart; |
||||||
|
import com.fr.base.chart.BaseChartGetter; |
||||||
|
import com.fr.base.chart.BaseChartNameID; |
||||||
|
import com.fr.base.vcs.DesignerMode; |
||||||
|
import com.fr.design.ChartTypeInterfaceManager; |
||||||
|
import com.fr.design.constants.UIConstants; |
||||||
|
import com.fr.design.gui.ibutton.UIButton; |
||||||
|
import com.fr.design.gui.itooltip.MultiLineToolTip; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.layout.FRGUIPaneFactory; |
||||||
|
import com.fr.design.mainframe.dnd.SerializableTransferable; |
||||||
|
import com.fr.log.FineLoggerFactory; |
||||||
|
import com.fr.report.poly.PolyECBlock; |
||||||
|
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JFrame; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.JToolBar; |
||||||
|
import javax.swing.JToolTip; |
||||||
|
import javax.swing.SwingConstants; |
||||||
|
import javax.swing.UIManager; |
||||||
|
import javax.swing.UnsupportedLookAndFeelException; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.awt.datatransfer.Transferable; |
||||||
|
import java.awt.dnd.DnDConstants; |
||||||
|
import java.awt.dnd.DragGestureEvent; |
||||||
|
import java.awt.dnd.DragGestureListener; |
||||||
|
import java.awt.dnd.DragSource; |
||||||
|
import java.awt.dnd.DragSourceDragEvent; |
||||||
|
import java.awt.dnd.DragSourceDropEvent; |
||||||
|
import java.awt.dnd.DragSourceEvent; |
||||||
|
import java.awt.dnd.DragSourceListener; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* 拖动聚合块的那个竖的动作条 |
||||||
|
* |
||||||
|
* @editor zhou |
||||||
|
* @since 2012-3-23下午3:42:10 |
||||||
|
*/ |
||||||
|
public class PolyComponentsBar extends JToolBar { |
||||||
|
private SerIcon[] serIcons; |
||||||
|
private static final int MAX_BAR_NUM = 15; |
||||||
|
|
||||||
|
public PolyComponentsBar() { |
||||||
|
setOrientation(SwingConstants.VERTICAL); |
||||||
|
setBorder(BorderFactory.createEmptyBorder(4, 4, 0, 4)); |
||||||
|
setFloatable(false); |
||||||
|
setBackground(UIConstants.TOOLBARUI_BACKGROUND); |
||||||
|
setLayout(FRGUIPaneFactory.create1ColumnGridLayout()); |
||||||
|
BaseChartNameID[] typeName = BaseChartGetter.getStaticAllChartBaseNames(); |
||||||
|
int typeLen = typeName.length < MAX_BAR_NUM ? typeName.length : MAX_BAR_NUM; |
||||||
|
serIcons = new SerIcon[typeLen + 1]; |
||||||
|
serIcons[0] = new SerIcon( |
||||||
|
PolyECBlock.class, |
||||||
|
Toolkit.i18nText("Fine-Design_Report_Poly_Report_Block"), |
||||||
|
"com/fr/design/images/poly/toolbar/Poly-Report_Block.png" |
||||||
|
); |
||||||
|
this.add(serIcons[0]); |
||||||
|
for (int i = 0; i < typeLen; i++) { |
||||||
|
BaseChart[] rowChart = BaseChartGetter.getStaticChartTypes(typeName[i].getPlotID()); |
||||||
|
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(typeName[i].getPlotID()); |
||||||
|
serIcons[i + 1] = new SerIcon(rowChart[0], Toolkit.i18nText(typeName[i].getName()), iconPath); |
||||||
|
this.add(serIcons[i + 1]); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否可用状态 |
||||||
|
*/ |
||||||
|
public void checkEnable() { |
||||||
|
for (SerIcon serIcon : serIcons) { |
||||||
|
serIcon.setEnabled(!DesignerMode.isAuthorityEditing()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private class SerIcon extends UIButton implements DragGestureListener, DragSourceListener { |
||||||
|
private DragSource dragSource; |
||||||
|
private Serializable serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @param serializable s |
||||||
|
* @param text 按钮名 |
||||||
|
* @param iconPath 图标路径 |
||||||
|
*/ |
||||||
|
public SerIcon(Serializable serializable, String text, String iconPath) { |
||||||
|
super(BaseUtils.readIcon(iconPath)); |
||||||
|
this.serializable = serializable; |
||||||
|
this.setToolTipText(text); |
||||||
|
this.set4ToolbarButton(); |
||||||
|
dragSource = new DragSource(); |
||||||
|
dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, this); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
return new Dimension(getIcon().getIconWidth(), getIcon().getIconHeight()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public JToolTip createToolTip() { |
||||||
|
MultiLineToolTip tip = new MultiLineToolTip(); |
||||||
|
tip.setComponent(this); |
||||||
|
tip.setOpaque(false); |
||||||
|
return tip; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dragGestureRecognized(DragGestureEvent dge) { |
||||||
|
Transferable t = new SerializableTransferable(serializable); |
||||||
|
dragSource.startDrag(dge, DragSource.DefaultCopyDrop, t, this); |
||||||
|
getModel().setArmed(false); |
||||||
|
getModel().setRollover(false); |
||||||
|
repaint(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dragEnter(DragSourceDragEvent dsde) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dragOver(DragSourceDragEvent dsde) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dropActionChanged(DragSourceDragEvent dsde) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dragExit(DragSourceEvent dse) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void dragDropEnd(DragSourceDropEvent dsde) { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 测试下 |
||||||
|
* |
||||||
|
* @param args 参数 |
||||||
|
*/ |
||||||
|
public static void main(String... args) { |
||||||
|
try { |
||||||
|
UIManager.setLookAndFeel(new WindowsLookAndFeel()); |
||||||
|
} catch (UnsupportedLookAndFeelException e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
} |
||||||
|
JFrame f = new JFrame(); |
||||||
|
JPanel p = (JPanel) f.getContentPane(); |
||||||
|
p.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||||
|
PolyComponentsBar pbp = new PolyComponentsBar(); |
||||||
|
p.add(pbp, BorderLayout.CENTER); |
||||||
|
|
||||||
|
f.setSize(400, 300); |
||||||
|
f.setVisible(true); |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -1,142 +0,0 @@ |
|||||||
package com.fr.poly; |
|
||||||
|
|
||||||
import com.fr.base.BaseUtils; |
|
||||||
import com.fr.base.FRContext; |
|
||||||
import com.fr.base.chart.BaseChart; |
|
||||||
import com.fr.base.chart.BaseChartGetter; |
|
||||||
import com.fr.base.chart.BaseChartNameID; |
|
||||||
import com.fr.base.vcs.DesignerMode; |
|
||||||
import com.fr.design.constants.UIConstants; |
|
||||||
import com.fr.design.gui.ibutton.UIButton; |
|
||||||
import com.fr.design.gui.itooltip.MultiLineToolTip; |
|
||||||
import com.fr.design.layout.FRGUIPaneFactory; |
|
||||||
import com.fr.design.mainframe.dnd.SerializableTransferable; |
|
||||||
|
|
||||||
import com.fr.report.poly.PolyECBlock; |
|
||||||
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; |
|
||||||
|
|
||||||
import javax.swing.*; |
|
||||||
import java.awt.*; |
|
||||||
import java.awt.datatransfer.Transferable; |
|
||||||
import java.awt.dnd.*; |
|
||||||
import java.io.Serializable; |
|
||||||
/** |
|
||||||
* 拖动聚合块的那个竖的动作条 |
|
||||||
* @editor zhou |
|
||||||
* @since 2012-3-23下午3:42:10 |
|
||||||
*/ |
|
||||||
public class PolyComponetsBar extends JToolBar { |
|
||||||
private static Color FOLDER_PANE_BACKGROUND = new Color(214, 223, 247); |
|
||||||
private BaseChartNameID[] typeName = BaseChartGetter.getStaticAllChartBaseNames(); |
|
||||||
private SerIcon[] serIcons; |
|
||||||
private static final int MAX_BAR_NUM = 15; |
|
||||||
|
|
||||||
public PolyComponetsBar() { |
|
||||||
setOrientation(SwingConstants.VERTICAL); |
|
||||||
setBorder(BorderFactory.createEmptyBorder(4, 4, 0, 4)); |
|
||||||
setFloatable(false); |
|
||||||
setBackground(UIConstants.TOOLBARUI_BACKGROUND); |
|
||||||
setLayout(FRGUIPaneFactory.create1ColumnGridLayout()); |
|
||||||
int typeLen = typeName.length < MAX_BAR_NUM ? typeName.length : MAX_BAR_NUM; |
|
||||||
serIcons = new SerIcon[typeLen + 1]; |
|
||||||
serIcons[0] = new SerIcon(PolyECBlock.class, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Poly_Report_Block"), "Fine-Design_Report_Poly_Report_Block"); |
|
||||||
this.add(serIcons[0]); |
|
||||||
for (int i = 0; i < typeLen; i++) { |
|
||||||
BaseChart[] rowChart = BaseChartGetter.getStaticChartTypes(typeName[i].getPlotID()); |
|
||||||
serIcons[i + 1] = new SerIcon(rowChart[0], com.fr.design.i18n.Toolkit.i18nText(typeName[i].getName()), typeName[i].getName()); |
|
||||||
this.add(serIcons[i + 1]); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 设置是否可用状态 |
|
||||||
*/ |
|
||||||
public void checkEnable() { |
|
||||||
for (SerIcon serIcon : serIcons) { |
|
||||||
serIcon.setEnabled(!DesignerMode.isAuthorityEditing()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private class SerIcon extends UIButton implements DragGestureListener, DragSourceListener { |
|
||||||
private DragSource dragSource; |
|
||||||
private Serializable serializable; |
|
||||||
|
|
||||||
public SerIcon(Serializable serializable, String text, String iconName) { |
|
||||||
super(BaseUtils.readIcon("com/fr/design/images/poly/toolbar/" + iconName + ".png")); |
|
||||||
this.serializable = serializable; |
|
||||||
this.setToolTipText(text); |
|
||||||
this.set4ToolbarButton(); |
|
||||||
dragSource = new DragSource(); |
|
||||||
dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, this); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Dimension getPreferredSize() { |
|
||||||
return new Dimension(getIcon().getIconWidth(), getIcon().getIconHeight()); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public JToolTip createToolTip() { |
|
||||||
MultiLineToolTip tip = new MultiLineToolTip(); |
|
||||||
tip.setComponent(this); |
|
||||||
tip.setOpaque(false); |
|
||||||
return tip; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dragGestureRecognized(DragGestureEvent dge) { |
|
||||||
Transferable t = new SerializableTransferable(serializable); |
|
||||||
dragSource.startDrag(dge, DragSource.DefaultCopyDrop, t, this); |
|
||||||
getModel().setArmed(false); |
|
||||||
getModel().setRollover(false); |
|
||||||
repaint(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dragEnter(DragSourceDragEvent dsde) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dragOver(DragSourceDragEvent dsde) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dropActionChanged(DragSourceDragEvent dsde) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dragExit(DragSourceEvent dse) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void dragDropEnd(DragSourceDropEvent dsde) { |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 测试下 |
|
||||||
* @param args 参数 |
|
||||||
*/ |
|
||||||
public static void main(String... args) { |
|
||||||
try { |
|
||||||
UIManager.setLookAndFeel(new WindowsLookAndFeel()); |
|
||||||
} catch (UnsupportedLookAndFeelException e) { |
|
||||||
FRContext.getLogger().error(e.getMessage(), e); |
|
||||||
} |
|
||||||
JFrame f = new JFrame(); |
|
||||||
JPanel p = (JPanel) f.getContentPane(); |
|
||||||
p.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
||||||
PolyComponetsBar pbp = new PolyComponetsBar(); |
|
||||||
p.add(pbp, BorderLayout.CENTER); |
|
||||||
|
|
||||||
f.setSize(400, 300); |
|
||||||
f.setVisible(true); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue