forked from fanruan/design
Browse Source
# Conflicts: # designer_base/src/com/fr/design/locale/designer.properties # designer_base/src/com/fr/design/locale/designer_en_US.properties # designer_base/src/com/fr/design/locale/designer_ja_JP.properties # designer_base/src/com/fr/design/locale/designer_ko_KR.properties # designer_base/src/com/fr/design/locale/designer_zh_CN.properties # designer_base/src/com/fr/design/locale/designer_zh_TW.propertiesmaster
daniel
8 years ago
57 changed files with 3471 additions and 1016 deletions
@ -1 +1 @@ |
|||||||
package com.fr.design.actions;
import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.menu.KeySetUtils;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.design.designer.TargetComponent;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.*;
/**
* Author : daisy
* Date: 13-8-30
* Time: 上午10:12
*/
public class AllowAuthorityEditAction extends TemplateComponentAction {
public AllowAuthorityEditAction(TargetComponent t) {
super(t);
this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT);
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png"));
}
/**
* 撤销
*/
public void prepare4Undo() {
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState();
}
/**
* 执行动作
*
* @return 是否执行成功
*/
public boolean executeActionReturnUndoRecordNeeded() {
TargetComponent tc = getEditingComponent();
if (tc == null) {
return false;
}
cleanAuthorityCondition();
//进入时是格式刷则取消格式刷
if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) {
tc.cancelFormat();
}
BaseUtils.setAuthorityEditing(true);
ReportAndFSManagePane.getInstance().refreshDockingView();
RolesAlreadyEditedPane.getInstance().refreshDockingView();
WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance());
DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY);
DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus());
DesignerContext.getDesignerFrame().needToAddAuhtorityPaint();
EastRegionContainerPane.getInstance().replaceUpPane(tc.getEastUpPane());
DesignerContext.getDesignerFrame().refreshDottedLine();
EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance());
EastRegionContainerPane.getInstance().removeParameterPane();
//画虚线
return true;
}
/**
* 进入权限编辑之前将权限编辑界面重置一下工具栏
*/
private void cleanAuthorityCondition() {
java.util.List<JTemplate<?, ?>> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList();
for (int i = 0; i < opendedTemplate.size(); i++) {
opendedTemplate.get(i).cleanAuthorityUndo();
}
}
} |
package com.fr.design.actions;
import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.menu.KeySetUtils;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.design.designer.TargetComponent;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.*;
/**
* Author : daisy
* Date: 13-8-30
* Time: 上午10:12
*/
public class AllowAuthorityEditAction extends TemplateComponentAction {
public AllowAuthorityEditAction(TargetComponent t) {
super(t);
this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT);
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png"));
}
/**
* 撤销
*/
public void prepare4Undo() {
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState();
}
/**
* 执行动作
*
* @return 是否执行成功
*/
public boolean executeActionReturnUndoRecordNeeded() {
TargetComponent tc = getEditingComponent();
if (tc == null) {
return false;
}
cleanAuthorityCondition();
//进入时是格式刷则取消格式刷
if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) {
tc.cancelFormat();
}
BaseUtils.setAuthorityEditing(true);
ReportAndFSManagePane.getInstance().refreshDockingView();
RolesAlreadyEditedPane.getInstance().refreshDockingView();
WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance());
DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY);
DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus());
DesignerContext.getDesignerFrame().needToAddAuhtorityPaint();
EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.AUTHORITY_EDITION);
EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(tc.getEastUpPane());
DesignerContext.getDesignerFrame().refreshDottedLine();
EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance());
EastRegionContainerPane.getInstance().removeParameterPane();
//画虚线
return true;
}
/**
* 进入权限编辑之前将权限编辑界面重置一下工具栏
*/
private void cleanAuthorityCondition() {
java.util.List<JTemplate<?, ?>> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList();
for (int i = 0; i < opendedTemplate.size(); i++) {
opendedTemplate.get(i).cleanAuthorityUndo();
}
}
} |
@ -0,0 +1,111 @@ |
|||||||
|
package com.fr.design.foldablepane; |
||||||
|
|
||||||
|
import com.fr.design.constants.UIConstants; |
||||||
|
|
||||||
|
import java.awt.*; |
||||||
|
import java.awt.image.BufferedImage; |
||||||
|
import javax.swing.JPanel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by MoMeak on 2017/7/5. |
||||||
|
*/ |
||||||
|
public class HeaderPane extends JPanel { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
private int headWidth = 280; |
||||||
|
private int headHeight = 25; |
||||||
|
private Color bgColor; |
||||||
|
private boolean isShow; |
||||||
|
private String title; |
||||||
|
private Image image; |
||||||
|
private int fontSize = 13; |
||||||
|
public void setShow(boolean isShow) { |
||||||
|
this.isShow = isShow; |
||||||
|
} |
||||||
|
|
||||||
|
public void setTitle(String title) |
||||||
|
{ |
||||||
|
this.title = title; |
||||||
|
} |
||||||
|
|
||||||
|
public void setHeadWidth(int headwidth){ |
||||||
|
this.headWidth = headwidth; |
||||||
|
} |
||||||
|
|
||||||
|
public void setheadHeight(int headHeight){ |
||||||
|
this.headHeight = headHeight; |
||||||
|
} |
||||||
|
|
||||||
|
public void setFontSize(int fontSize){ |
||||||
|
this.fontSize = fontSize; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected void paintComponent(Graphics g) { |
||||||
|
Graphics2D g2d = (Graphics2D) g.create(); |
||||||
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, |
||||||
|
RenderingHints.VALUE_ANTIALIAS_ON); |
||||||
|
BufferedImage panelImage = createPanelImage(); |
||||||
|
g2d.drawImage(panelImage, null, 0, 0); |
||||||
|
} |
||||||
|
|
||||||
|
private BufferedImage createPanelImage() { |
||||||
|
BufferedImage panelImage = new BufferedImage(getWidth(), headHeight, BufferedImage.TYPE_INT_ARGB); |
||||||
|
Graphics2D g2d = panelImage.createGraphics(); |
||||||
|
|
||||||
|
g2d.fillRect(0, 0, headWidth, headHeight); |
||||||
|
g2d.drawImage(UIConstants.DRAG_BAR, 0, 0, headWidth, headHeight, null); |
||||||
|
g2d.setFont(new Font("SimSun", 0, fontSize)); |
||||||
|
g2d.setPaint(bgColor); |
||||||
|
// g2d.drawString(this.title, fontSize/2, headHeight-fontSize/3);
|
||||||
|
g2d.drawString(this.title, 0, headHeight-fontSize/3); |
||||||
|
if(this.isShow) |
||||||
|
{ |
||||||
|
image = UIConstants.DRAG_DOWN_PRESS; |
||||||
|
g2d.drawImage(image, title.length() * fontSize, headHeight/2-1, null); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
image = UIConstants.DRAG_RIGHT_PRESS; |
||||||
|
g2d.drawImage(image, title.length() * fontSize, headHeight/3, null); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return panelImage; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
return new Dimension(this.getWidth(), headHeight); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dimension getSize() { |
||||||
|
return new Dimension(this.getWidth(), headHeight); |
||||||
|
} |
||||||
|
|
||||||
|
public HeaderPane(Color bgColor) { |
||||||
|
this.bgColor = bgColor; |
||||||
|
this.isShow = true; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public HeaderPane(Color bgColor, String title , int headWidth, int headHeight) { |
||||||
|
this(bgColor); |
||||||
|
this.title = title; |
||||||
|
this.headHeight = headHeight; |
||||||
|
this.headWidth = headWidth; |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) |
||||||
|
{ |
||||||
|
// JFrame mainFrame = new JFrame("UI Demo - Gloomyfish");
|
||||||
|
// mainFrame.getContentPane().setLayout(new BorderLayout());
|
||||||
|
// mainFrame.getContentPane().add(new HeaderPane(Color.black, "基本",280,25), BorderLayout.CENTER);
|
||||||
|
// mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
// mainFrame.pack();
|
||||||
|
// mainFrame.setSize(280, 400);
|
||||||
|
// mainFrame.setVisible(true);
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,95 @@ |
|||||||
|
package com.fr.design.foldablepane; |
||||||
|
|
||||||
|
import java.awt.*; |
||||||
|
import java.awt.event.MouseAdapter; |
||||||
|
import java.awt.event.MouseEvent; |
||||||
|
|
||||||
|
import javax.swing.*; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Created by MoMeak on 2017/7/5. |
||||||
|
*/ |
||||||
|
public class UIExpandablePane extends JPanel { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
private HeaderPane headerPanel; |
||||||
|
private JPanel contentPanel; |
||||||
|
private Color color = Color.black; |
||||||
|
private String title; |
||||||
|
private int headWidth; |
||||||
|
private int headHeight; |
||||||
|
|
||||||
|
|
||||||
|
public UIExpandablePane(String title,int headWidth,int headHeight,JPanel contentPanel) |
||||||
|
{ |
||||||
|
super(); |
||||||
|
this.title = title; |
||||||
|
this.headWidth = headWidth; |
||||||
|
this.headHeight = headHeight; |
||||||
|
this.contentPanel = contentPanel; |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initComponents() { |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
headerPanel = new HeaderPane(color, title,headWidth,headHeight); |
||||||
|
headerPanel.addMouseListener(new PanelAction()); |
||||||
|
this.add(headerPanel, BorderLayout.NORTH); |
||||||
|
this.add(contentPanel, BorderLayout.CENTER); |
||||||
|
setOpaque(false); |
||||||
|
} |
||||||
|
|
||||||
|
class PanelAction extends MouseAdapter |
||||||
|
{ |
||||||
|
public void mousePressed(MouseEvent e) |
||||||
|
{ |
||||||
|
HeaderPane hp = (HeaderPane)e.getSource(); |
||||||
|
if(contentPanel.isShowing()) |
||||||
|
{ |
||||||
|
contentPanel.setVisible(false); |
||||||
|
hp.setShow(false); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
contentPanel.setVisible(true); |
||||||
|
hp.setShow(true); |
||||||
|
} |
||||||
|
hp.getParent().validate(); |
||||||
|
hp.getParent().repaint(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) |
||||||
|
{ |
||||||
|
// JFrame jf = new JFrame("test");
|
||||||
|
// jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
// JPanel content = (JPanel) jf.getContentPane();
|
||||||
|
// content.setLayout(new BorderLayout());
|
||||||
|
//
|
||||||
|
// JPanel myPanel = new JPanel();
|
||||||
|
// myPanel.setLayout(new BorderLayout());
|
||||||
|
// JPanel Panel = new JPanel();
|
||||||
|
// Panel.setBackground(Color.blue);
|
||||||
|
// myPanel.add(new UIExpandablePane("基本",280,25,Panel),BorderLayout.CENTER);
|
||||||
|
//// myPanel.setLayout(new GridBagLayout());
|
||||||
|
//// myPanel.add(new JExpandablePanel());
|
||||||
|
//// GridBagConstraints gbc = new GridBagConstraints();
|
||||||
|
//// JPanel[] panels = new JPanel[4]; //
|
||||||
|
//// gbc.insets = new Insets(1,3,0,3);
|
||||||
|
//// gbc.weightx = 1.0;
|
||||||
|
//// gbc.fill = GridBagConstraints.HORIZONTAL;
|
||||||
|
//// gbc.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
|
//// for(int j = 0; j < panels.length; j++)
|
||||||
|
//// {
|
||||||
|
//// panels[j] = new JExpandablePanel();
|
||||||
|
//// myPanel.add(panels[j], gbc);
|
||||||
|
//// }
|
||||||
|
// content.add(myPanel, BorderLayout.CENTER);
|
||||||
|
// GUICoreUtils.centerWindow(jf);
|
||||||
|
// jf.setSize(280, 400);
|
||||||
|
// jf.setVisible(true);
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,310 @@ |
|||||||
|
package com.fr.design.gui.icontainer; |
||||||
|
|
||||||
|
import com.fr.base.BaseUtils; |
||||||
|
import com.fr.design.constants.UIConstants; |
||||||
|
import com.fr.design.gui.ibutton.UIButton; |
||||||
|
import com.fr.design.mainframe.DesignerContext; |
||||||
|
import com.fr.design.utils.gui.GUICoreUtils; |
||||||
|
import com.fr.stable.Constants; |
||||||
|
|
||||||
|
import javax.swing.*; |
||||||
|
import java.awt.*; |
||||||
|
import java.awt.event.MouseAdapter; |
||||||
|
import java.awt.event.MouseEvent; |
||||||
|
import java.awt.event.MouseMotionListener; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by plough on 2017/7/7. |
||||||
|
*/ |
||||||
|
public class UIEastResizableContainer extends JPanel { |
||||||
|
private static final long serialVersionUID = 1854340560790476907L; |
||||||
|
private int containerWidth = 240; |
||||||
|
private int preferredWidth = 240; |
||||||
|
private int topToolPaneHeight = 20; |
||||||
|
private int leftPaneWidth = 40; |
||||||
|
|
||||||
|
private JComponent leftPane; |
||||||
|
private JComponent rightPane; |
||||||
|
|
||||||
|
// private HorizotalToolPane horizontToolPane;
|
||||||
|
private TopToolPane topToolPane; |
||||||
|
|
||||||
|
|
||||||
|
private static final int ARROW_MARGIN = 15; |
||||||
|
private static final int ARROW_RANGE = 35; |
||||||
|
|
||||||
|
// private boolean isRightPaneVisible = true;
|
||||||
|
|
||||||
|
public UIEastResizableContainer() { |
||||||
|
this(new JPanel(), new JPanel()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置面板宽度 |
||||||
|
* |
||||||
|
* @param width |
||||||
|
*/ |
||||||
|
public void setContainerWidth(int width) { |
||||||
|
this.containerWidth = width; |
||||||
|
this.preferredWidth = width; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isRightPaneVisible() { |
||||||
|
return containerWidth > leftPaneWidth; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
// public void setRightPaneVisible(boolean isVisible){
|
||||||
|
// this.isRightPaneVisible = isVisible;
|
||||||
|
// }
|
||||||
|
|
||||||
|
private void setPreferredWidth(int width) { |
||||||
|
this.preferredWidth = width; |
||||||
|
} |
||||||
|
|
||||||
|
public UIEastResizableContainer(JComponent leftPane, JComponent rightPane) { |
||||||
|
setBackground(UIConstants.NORMAL_BACKGROUND); |
||||||
|
this.leftPane = leftPane; |
||||||
|
this.rightPane = rightPane; |
||||||
|
|
||||||
|
this.topToolPane = new TopToolPane(); |
||||||
|
|
||||||
|
setLayout(containerLayout); |
||||||
|
add(topToolPane); |
||||||
|
add(leftPane); |
||||||
|
add(rightPane); |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String... args) { |
||||||
|
JFrame jf = new JFrame("test"); |
||||||
|
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
||||||
|
JPanel content = (JPanel) jf.getContentPane(); |
||||||
|
content.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
JPanel leftPane = new JPanel(); |
||||||
|
leftPane.setBackground(Color.yellow); |
||||||
|
JPanel rightPane = new JPanel(); |
||||||
|
rightPane.setBackground(Color.green); |
||||||
|
|
||||||
|
UIButton b1, b2; |
||||||
|
b1 = new UIButton("b1"); |
||||||
|
b2 = new UIButton("b2"); |
||||||
|
b1.setPreferredSize(new Dimension(40, 40)); |
||||||
|
b2.setPreferredSize(new Dimension(40, 40)); |
||||||
|
leftPane.add(b1); |
||||||
|
leftPane.add(b2); |
||||||
|
|
||||||
|
|
||||||
|
UIEastResizableContainer bb = new UIEastResizableContainer(leftPane, rightPane); |
||||||
|
|
||||||
|
JPanel cc = new JPanel(); |
||||||
|
cc.setBackground(Color.white); |
||||||
|
|
||||||
|
content.add(bb, BorderLayout.EAST); |
||||||
|
content.add(cc, BorderLayout.CENTER); |
||||||
|
GUICoreUtils.centerWindow(jf); |
||||||
|
jf.setSize(500, 500); |
||||||
|
jf.setVisible(true); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 将面板设置成最佳的宽度 |
||||||
|
*/ |
||||||
|
public void setWindow2PreferWidth() { |
||||||
|
if (containerWidth == leftPaneWidth) { |
||||||
|
containerWidth = preferredWidth; |
||||||
|
refreshContainer(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 得到容器的宽度 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public int getContainerWidth() { |
||||||
|
return this.containerWidth; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置关闭设计器前最后一次面板的宽度 |
||||||
|
* |
||||||
|
* @param containerWidth |
||||||
|
*/ |
||||||
|
public void setLastContainerWidth(int containerWidth) { |
||||||
|
this.containerWidth = containerWidth; |
||||||
|
} |
||||||
|
|
||||||
|
private LayoutManager containerLayout = new LayoutManager() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeLayoutComponent(Component comp) { |
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dimension preferredLayoutSize(Container parent) { |
||||||
|
return parent.getPreferredSize(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dimension minimumLayoutSize(Container parent) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void layoutContainer(Container parent) { |
||||||
|
if (topToolPane == null || rightPane == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
topToolPane.setBounds(0, 0, containerWidth, topToolPaneHeight);//0,0,10,462
|
||||||
|
leftPane.setBounds(0, topToolPaneHeight, leftPaneWidth, getHeight() - topToolPaneHeight); |
||||||
|
|
||||||
|
// parameterPane.setBounds(20, 0, 230, getParameterPaneHeight());//10,0,230,462
|
||||||
|
rightPane.setBounds(leftPaneWidth, topToolPaneHeight, containerWidth-leftPaneWidth, getHeight() - topToolPaneHeight);//20,0,230,0
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addLayoutComponent(String name, Component comp) { |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
@Override |
||||||
|
/** |
||||||
|
* 得到最佳大小 |
||||||
|
*/ |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
return new Dimension(containerWidth, 400); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 替换左子面板 |
||||||
|
* |
||||||
|
* @param pane 面板 |
||||||
|
*/ |
||||||
|
public void replaceLeftPane(JComponent pane) { |
||||||
|
remove(pane); |
||||||
|
remove(this.leftPane); |
||||||
|
add(this.leftPane = pane); |
||||||
|
refreshContainer(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 替换右子面板 |
||||||
|
* |
||||||
|
* @param pane 面板 |
||||||
|
*/ |
||||||
|
public void replaceRightPane(JComponent pane) { |
||||||
|
remove(pane); |
||||||
|
remove(this.rightPane); |
||||||
|
add(this.rightPane = pane); |
||||||
|
refreshContainer(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 得到左子面板 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public JComponent getLeftPane() { |
||||||
|
return this.leftPane; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 得到右子面板 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public JComponent getRightPane() { |
||||||
|
return this.rightPane; |
||||||
|
} |
||||||
|
|
||||||
|
private void refreshContainer() { |
||||||
|
validate(); |
||||||
|
repaint(); |
||||||
|
revalidate(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 伸缩右子面板时,触发此方法 |
||||||
|
*/ |
||||||
|
public void onResize() { |
||||||
|
} |
||||||
|
|
||||||
|
private class TopToolPane extends JPanel { |
||||||
|
private int model = UIConstants.MODEL_NORMAL; |
||||||
|
|
||||||
|
public TopToolPane() { |
||||||
|
super(); |
||||||
|
addMouseMotionListener(new MouseMotionListener() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void mouseMoved(MouseEvent e) { |
||||||
|
if (e.getX() <= ARROW_RANGE) { |
||||||
|
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
||||||
|
model = UIConstants.MODEL_PRESS; |
||||||
|
} else { |
||||||
|
setCursor(Cursor.getDefaultCursor()); |
||||||
|
model = UIConstants.MODEL_NORMAL; |
||||||
|
} |
||||||
|
repaint(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void mouseDragged(MouseEvent e) { |
||||||
|
} |
||||||
|
}); |
||||||
|
addMouseListener(new MouseAdapter() { |
||||||
|
@Override |
||||||
|
public void mouseExited(MouseEvent e) { |
||||||
|
setCursor(Cursor.getDefaultCursor()); |
||||||
|
model = UIConstants.MODEL_NORMAL; |
||||||
|
repaint(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void mouseClicked(MouseEvent e) { |
||||||
|
if (e.getX() <= ARROW_RANGE) { |
||||||
|
if (containerWidth == leftPaneWidth) { |
||||||
|
containerWidth = preferredWidth; |
||||||
|
} else { |
||||||
|
setPreferredWidth(containerWidth); |
||||||
|
containerWidth = leftPaneWidth; |
||||||
|
} |
||||||
|
onResize(); |
||||||
|
refreshContainer(); |
||||||
|
if (BaseUtils.isAuthorityEditing()) { |
||||||
|
DesignerContext.getDesignerFrame().doResize(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void paint(Graphics g) { |
||||||
|
Image button; |
||||||
|
|
||||||
|
g.drawImage(UIConstants.DRAG_BAR, 0, 0, containerWidth, topToolPaneHeight, null); |
||||||
|
if (containerWidth == leftPaneWidth) { |
||||||
|
if (model == UIConstants.MODEL_NORMAL) { |
||||||
|
button = UIConstants.DRAG_LEFT_NORMAL; |
||||||
|
} else { |
||||||
|
button = UIConstants.DRAG_LEFT_PRESS; |
||||||
|
} |
||||||
|
} else { |
||||||
|
if (model == UIConstants.MODEL_NORMAL) { |
||||||
|
button = UIConstants.DRAG_RIGHT_NORMAL; |
||||||
|
} else { |
||||||
|
button = UIConstants.DRAG_RIGHT_PRESS; |
||||||
|
} |
||||||
|
} |
||||||
|
// g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null);
|
||||||
|
g.drawImage(button, 20, 7, 5, 5, null); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,417 @@ |
|||||||
|
package com.fr.design.mainframe; |
||||||
|
|
||||||
|
import com.fr.base.BaseUtils; |
||||||
|
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.gui.islider.UISlider; |
||||||
|
import com.fr.design.gui.itextfield.UITextField; |
||||||
|
import com.fr.design.utils.gui.GUICoreUtils; |
||||||
|
import com.fr.general.Inter; |
||||||
|
|
||||||
|
import javax.swing.*; |
||||||
|
import javax.swing.border.MatteBorder; |
||||||
|
import javax.swing.event.ChangeEvent; |
||||||
|
import javax.swing.event.ChangeListener; |
||||||
|
import javax.swing.event.DocumentEvent; |
||||||
|
import javax.swing.event.DocumentListener; |
||||||
|
import javax.swing.plaf.basic.BasicSliderUI; |
||||||
|
import java.awt.*; |
||||||
|
import java.awt.event.*; |
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by MoMeak on 2017/7/13. |
||||||
|
*/ |
||||||
|
public class JSliderPane extends JPanel { |
||||||
|
|
||||||
|
private static final double ONEPOINTEIGHT = 1.8; |
||||||
|
private static final int SIX = 6; |
||||||
|
private static final int TEN = 10; |
||||||
|
private static final int ONEEIGHT = 18; |
||||||
|
private static final int FOURTEN = 40; |
||||||
|
private static final int HALFHUNDRED = 50; |
||||||
|
private static final int HUNDRED = 100; |
||||||
|
private static final int TWOHUNDRED = 200; |
||||||
|
private static final int THREEHUNDRED = 300; |
||||||
|
private static final int FOURHUNDRED = 400; |
||||||
|
private static final int DIALOGWIDTH = 150; |
||||||
|
private static final int DIALOGHEIGHT = 200; |
||||||
|
public int showValue = 100; |
||||||
|
public double resolutionTimes = 1.0; |
||||||
|
private static JSliderPane THIS; |
||||||
|
private UITextField showVal; |
||||||
|
private UISlider slider; |
||||||
|
private int times; |
||||||
|
private int sliderValue; |
||||||
|
private UIButton downButton; |
||||||
|
private UIButton upButton; |
||||||
|
private UIButton showValButton; |
||||||
|
private UIRadioButton twoHundredButton; |
||||||
|
private UIRadioButton oneHundredButton; |
||||||
|
private UIRadioButton SevenFiveButton; |
||||||
|
private UIRadioButton fiveTenButton; |
||||||
|
private UIRadioButton twoFiveButton; |
||||||
|
private UIRadioButton selfAdaptButton; |
||||||
|
private UIRadioButton customButton; |
||||||
|
//拖动条处理和button、直接输入不一样
|
||||||
|
private boolean isButtonOrIsTxt = true; |
||||||
|
private PopupPane dialog; |
||||||
|
private int upButtonX; |
||||||
|
|
||||||
|
|
||||||
|
public JSliderPane() { |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
slider = new UISlider(0,HUNDRED,HALFHUNDRED); |
||||||
|
slider.setUI(new JSliderPaneUI(slider)); |
||||||
|
slider.addChangeListener(listener); |
||||||
|
|
||||||
|
showVal = new UITextField(); |
||||||
|
showVal.setText("100%"); |
||||||
|
showVal.setPreferredSize(new Dimension(FOURTEN,ONEEIGHT)); |
||||||
|
showVal.getDocument().addDocumentListener(showValDocumentListener); |
||||||
|
|
||||||
|
downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/moveDown.png")); |
||||||
|
upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/moveUp.png")); |
||||||
|
downButton.setActionCommand("less"); |
||||||
|
upButton.setActionCommand("more"); |
||||||
|
downButton.addActionListener(buttonActionListener); |
||||||
|
upButton.addActionListener(buttonActionListener); |
||||||
|
|
||||||
|
JPanel panel = new JPanel(new FlowLayout(1,1,0)); |
||||||
|
|
||||||
|
showValButton = new UIButton(showVal.getText()); |
||||||
|
showValButton.setBorderPainted(false); |
||||||
|
showValButton.setPreferredSize(new Dimension(HALFHUNDRED,ONEEIGHT)); |
||||||
|
|
||||||
|
showValButton.addActionListener(new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
popupDialog(); |
||||||
|
} |
||||||
|
}); |
||||||
|
panel.add(downButton); |
||||||
|
panel.add(slider); |
||||||
|
panel.add(upButton); |
||||||
|
panel.add(showValButton); |
||||||
|
this.add(panel,BorderLayout.NORTH); |
||||||
|
this.setBounds(0,0,THREEHUNDRED,ONEEIGHT); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public static final JSliderPane getInstance() { |
||||||
|
// if (THIS == null) {
|
||||||
|
// THIS = new JSliderPane();
|
||||||
|
// }
|
||||||
|
THIS = new JSliderPane(); |
||||||
|
return THIS; |
||||||
|
} |
||||||
|
|
||||||
|
private void initUIRadioButton(){ |
||||||
|
twoHundredButton = new UIRadioButton("200%"); |
||||||
|
oneHundredButton = new UIRadioButton("100%"); |
||||||
|
SevenFiveButton = new UIRadioButton("75%"); |
||||||
|
fiveTenButton = new UIRadioButton("50%"); |
||||||
|
twoFiveButton = new UIRadioButton("25%"); |
||||||
|
selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); |
||||||
|
customButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_customButton")); |
||||||
|
|
||||||
|
ButtonGroup bg=new ButtonGroup();// 初始化按钮组
|
||||||
|
bg.add(twoHundredButton);// 加入按钮组
|
||||||
|
bg.add(oneHundredButton); |
||||||
|
bg.add(SevenFiveButton); |
||||||
|
bg.add(fiveTenButton); |
||||||
|
bg.add(twoFiveButton); |
||||||
|
bg.add(selfAdaptButton); |
||||||
|
bg.add(customButton); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//定义一个监听器,用于监听所有滑动条
|
||||||
|
ChangeListener listener = new ChangeListener() |
||||||
|
{ |
||||||
|
public void stateChanged( ChangeEvent event) { |
||||||
|
//取出滑动条的值,并在文本中显示出来
|
||||||
|
if (!isButtonOrIsTxt){ |
||||||
|
JSlider source = (JSlider) event.getSource(); |
||||||
|
EventQueue.invokeLater(new Runnable() { |
||||||
|
public void run() { |
||||||
|
sliderValue = slider.getValue(); |
||||||
|
getTimes(sliderValue); |
||||||
|
showValue = times; |
||||||
|
showVal.setText(times + "%"); |
||||||
|
} |
||||||
|
}); |
||||||
|
}else { |
||||||
|
isButtonOrIsTxt = false; |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
DocumentListener showValDocumentListener = new DocumentListener() { |
||||||
|
@Override |
||||||
|
public void insertUpdate(DocumentEvent e) { |
||||||
|
isButtonOrIsTxt = true; |
||||||
|
resolutionTimes = divide(showValue,100,2); |
||||||
|
refreshSlider(); |
||||||
|
refreshBottun(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeUpdate(DocumentEvent e) { |
||||||
|
// refreshSlider();
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void changedUpdate(DocumentEvent e) { |
||||||
|
// refreshSlider();
|
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
private void refreshSlider(){ |
||||||
|
showValue = Integer.parseInt(showVal.getText().substring(0, showVal.getText().indexOf("%"))); |
||||||
|
if (showValue >HUNDRED){ |
||||||
|
slider.setValue((int)(showValue+TWOHUNDRED)/SIX); |
||||||
|
}else if (showValue <HUNDRED){ |
||||||
|
slider.setValue((int)((showValue-TEN)/ONEPOINTEIGHT)); |
||||||
|
}else if (showValue == HUNDRED){ |
||||||
|
slider.setValue(HALFHUNDRED); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void refreshBottun(){ |
||||||
|
showValButton.setText(showVal.getText()); |
||||||
|
} |
||||||
|
|
||||||
|
public double getResolutionTimes(){ |
||||||
|
return this.resolutionTimes; |
||||||
|
} |
||||||
|
|
||||||
|
public int getshowValue(){ |
||||||
|
return this.showValue; |
||||||
|
} |
||||||
|
|
||||||
|
public static double divide(double v1, double v2,int scale) { |
||||||
|
BigDecimal b1 = new BigDecimal(Double.toString(v1)); |
||||||
|
BigDecimal b2 = new BigDecimal(Double.toString(v2)); |
||||||
|
return b1.divide(b2,scale).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
ActionListener buttonActionListener = new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
showValue = Integer.parseInt(showVal.getText().substring(0, showVal.getText().indexOf("%"))); |
||||||
|
isButtonOrIsTxt = true; |
||||||
|
if(e.getActionCommand().equals("less")){ |
||||||
|
int newDownVal = showValue - TEN; |
||||||
|
if (newDownVal >= TEN ){ |
||||||
|
showValue = newDownVal; |
||||||
|
showVal.setText(newDownVal + "%"); |
||||||
|
}else { |
||||||
|
showValue = newDownVal; |
||||||
|
showVal.setText(TEN + "%"); |
||||||
|
} |
||||||
|
} |
||||||
|
if(e.getActionCommand().equals("more")){ |
||||||
|
int newUpVal = showValue + TEN; |
||||||
|
if (newUpVal <= FOURHUNDRED ){ |
||||||
|
showValue = newUpVal; |
||||||
|
showVal.setText(newUpVal + "%"); |
||||||
|
}else { |
||||||
|
showValue = newUpVal; |
||||||
|
showVal.setText(FOURHUNDRED + "%"); |
||||||
|
} |
||||||
|
} |
||||||
|
isButtonOrIsTxt = true; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void getTimes(int value){ |
||||||
|
if (value == HALFHUNDRED){ |
||||||
|
times=HUNDRED; |
||||||
|
}else if (value < HALFHUNDRED){ |
||||||
|
times = (int) Math.round(ONEPOINTEIGHT*value + TEN); |
||||||
|
}else { |
||||||
|
times = (int) (SIX*value - TWOHUNDRED); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public UITextField getShowVal(){ |
||||||
|
return this.showVal; |
||||||
|
} |
||||||
|
|
||||||
|
private void popupDialog(){ |
||||||
|
Point btnCoords = upButton.getLocationOnScreen(); |
||||||
|
if (dialog == null){ |
||||||
|
dialog = new PopupPane(upButton,showVal); |
||||||
|
if (upButtonX == 0) { |
||||||
|
upButtonX = btnCoords.x; |
||||||
|
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +HALFHUNDRED, -DIALOGHEIGHT); |
||||||
|
} |
||||||
|
}else { |
||||||
|
if (upButtonX == 0) { |
||||||
|
upButtonX = btnCoords.x; |
||||||
|
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +HALFHUNDRED, -DIALOGHEIGHT); |
||||||
|
} else { |
||||||
|
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +HALFHUNDRED, -DIALOGHEIGHT); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) |
||||||
|
{ |
||||||
|
JFrame jf = new JFrame("test"); |
||||||
|
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
||||||
|
JPanel content = (JPanel)jf.getContentPane(); |
||||||
|
content.setLayout(new BorderLayout()); |
||||||
|
content.add(JSliderPane.getInstance(),BorderLayout.CENTER); |
||||||
|
GUICoreUtils.centerWindow(jf); |
||||||
|
jf.setSize(400, 80); |
||||||
|
jf.setVisible(true); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class JSliderPaneUI extends BasicSliderUI { |
||||||
|
|
||||||
|
private static final int VERTICAL_WIDTH = 11; |
||||||
|
private static final int VERTICAL_HEIGHT = 16; |
||||||
|
private static final int FOUR = 4; |
||||||
|
private static final int FIVE = 5; |
||||||
|
private static final int SIX = 6; |
||||||
|
|
||||||
|
public JSliderPaneUI(UISlider b) { |
||||||
|
super(b); |
||||||
|
} |
||||||
|
|
||||||
|
/** */ |
||||||
|
/** |
||||||
|
* 绘制指示物 |
||||||
|
*/ |
||||||
|
|
||||||
|
public Dimension getThumbSize() { |
||||||
|
Dimension size = new Dimension(); |
||||||
|
|
||||||
|
if ( slider.getOrientation() == JSlider.VERTICAL ) { |
||||||
|
size.width = VERTICAL_WIDTH; |
||||||
|
size.height = VERTICAL_HEIGHT; |
||||||
|
} |
||||||
|
else { |
||||||
|
size.width = VERTICAL_WIDTH; |
||||||
|
size.height = VERTICAL_HEIGHT; |
||||||
|
} |
||||||
|
|
||||||
|
return size; |
||||||
|
} |
||||||
|
|
||||||
|
public void paintThumb(Graphics g) { |
||||||
|
Rectangle knobBounds = thumbRect; |
||||||
|
int w = knobBounds.width; |
||||||
|
int h = knobBounds.height; |
||||||
|
|
||||||
|
g.translate(knobBounds.x, knobBounds.y); |
||||||
|
if ( slider.isEnabled() ) { |
||||||
|
g.setColor(slider.getBackground()); |
||||||
|
} |
||||||
|
else { |
||||||
|
g.setColor(slider.getBackground().darker()); |
||||||
|
} |
||||||
|
g.setColor(Color.darkGray); |
||||||
|
g.fillRect(0, 1, w-SIX, h+1); |
||||||
|
} |
||||||
|
|
||||||
|
/** */ |
||||||
|
/** |
||||||
|
* 绘制刻度轨迹 |
||||||
|
*/ |
||||||
|
public void paintTrack(Graphics g) { |
||||||
|
int cy, cw; |
||||||
|
Rectangle trackBounds = trackRect; |
||||||
|
if (slider.getOrientation() == UISlider.HORIZONTAL) { |
||||||
|
Graphics2D g2 = (Graphics2D) g; |
||||||
|
cy = (trackBounds.height / 2); |
||||||
|
cw = trackBounds.width; |
||||||
|
g.setColor(Color.lightGray); |
||||||
|
g.drawLine(0, cy, cw+FIVE, cy); |
||||||
|
g.drawLine(FIVE+cw/2, cy-FOUR, FIVE+cw/2, cy+FOUR); |
||||||
|
} else { |
||||||
|
super.paintTrack(g); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
class Dialog extends JDialog { |
||||||
|
// private Container container;
|
||||||
|
// private static final int UPLABELHEIGHT = 25;
|
||||||
|
// private static final int HALFHUNDRED = 50;
|
||||||
|
// private static final int DIALOGWIDTH = 150;
|
||||||
|
// private static final int DIALOGHEIGHT = 200;
|
||||||
|
// private static final int UPLABELWIDTH = 300;
|
||||||
|
// private int minHeight; // 对话框最小高度
|
||||||
|
// private JComponent contentPane;
|
||||||
|
// private JComponent centerPane;
|
||||||
|
// private UILabel upLabel;
|
||||||
|
|
||||||
|
// public Dialog(UIButton b,UITextField j) {
|
||||||
|
// super(DesignerContext.getDesignerFrame());
|
||||||
|
// container = getContentPane();
|
||||||
|
// setUndecorated(true);
|
||||||
|
// contentPane = new JPanel(new BorderLayout());
|
||||||
|
// centerPane = new JPanel(new BorderLayout());
|
||||||
|
// upLabel = new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce"));
|
||||||
|
// upLabel.setOpaque(true);
|
||||||
|
// upLabel.setPreferredSize(new Dimension(UPLABELWIDTH,UPLABELHEIGHT));
|
||||||
|
// upLabel.setBackground(Color.LIGHT_GRAY);
|
||||||
|
// upLabel.setBorder(BorderFactory.createLineBorder(Color.gray,1));
|
||||||
|
// upLabel.setBorder(new MatteBorder(0,0,1,0,Color.gray));
|
||||||
|
// centerPane.add(j,BorderLayout.NORTH);
|
||||||
|
// contentPane.add(upLabel,BorderLayout.NORTH);
|
||||||
|
// contentPane.add(centerPane,BorderLayout.CENTER);
|
||||||
|
//// contentPane.setBorder(BorderFactory.createLineBorder(Color.gray,1));
|
||||||
|
// contentPane.setBorder(new MatteBorder(1,1,1,1,Color.darkGray));
|
||||||
|
//// contentPane.add(new JPanel())
|
||||||
|
// container.add(contentPane, BorderLayout.CENTER);
|
||||||
|
// minHeight = container.getPreferredSize().height;
|
||||||
|
// setSize(DIALOGWIDTH, DIALOGHEIGHT);
|
||||||
|
//// validate();
|
||||||
|
// Point btnCoords = b.getLocationOnScreen();
|
||||||
|
//
|
||||||
|
// this.setLocation(btnCoords.x - DIALOGWIDTH + b.getWidth() +HALFHUNDRED, btnCoords.y -DIALOGHEIGHT);
|
||||||
|
//// initListener();
|
||||||
|
//
|
||||||
|
// this.setVisible(true);
|
||||||
|
// }
|
||||||
|
} |
||||||
|
class PopupPane extends JPopupMenu { |
||||||
|
private JComponent contentPane; |
||||||
|
private static final int UPLABELHEIGHT = 25; |
||||||
|
private static final int HALFHUNDRED = 50; |
||||||
|
private static final int DIALOGWIDTH = 150; |
||||||
|
private static final int DIALOGHEIGHT = 200; |
||||||
|
private static final int UPLABELWIDTH = 300; |
||||||
|
private JComponent centerPane; |
||||||
|
private UILabel upLabel; |
||||||
|
PopupPane(UIButton b,UITextField j) { |
||||||
|
contentPane = new JPanel(new BorderLayout()); |
||||||
|
centerPane = new JPanel(new BorderLayout()); |
||||||
|
upLabel = new UILabel(Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce")); |
||||||
|
upLabel.setOpaque(true); |
||||||
|
upLabel.setPreferredSize(new Dimension(UPLABELWIDTH,UPLABELHEIGHT)); |
||||||
|
upLabel.setBackground(Color.LIGHT_GRAY); |
||||||
|
upLabel.setBorder(new MatteBorder(0,0,1,0,Color.gray)); |
||||||
|
centerPane.add(j,BorderLayout.NORTH); |
||||||
|
contentPane.add(upLabel,BorderLayout.NORTH); |
||||||
|
contentPane.add(centerPane,BorderLayout.CENTER); |
||||||
|
// contentPane.setBorder(new MatteBorder(1,1,1,1,Color.darkGray));
|
||||||
|
this.add(contentPane, BorderLayout.CENTER); |
||||||
|
this.setPreferredSize(new Dimension(DIALOGWIDTH, DIALOGHEIGHT)); |
||||||
|
this.setOpaque(false); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -1,60 +0,0 @@ |
|||||||
package com.fr.design.mainframe.loghandler; |
|
||||||
|
|
||||||
import com.fr.general.LogRecordTime; |
|
||||||
import com.fr.stable.StringUtils; |
|
||||||
import org.apache.log4j.Appender; |
|
||||||
import org.apache.log4j.Logger; |
|
||||||
import org.apache.log4j.WriterAppender; |
|
||||||
|
|
||||||
import java.io.PipedReader; |
|
||||||
import java.io.PipedWriter; |
|
||||||
import java.io.Writer; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.Scanner; |
|
||||||
import java.util.logging.Level; |
|
||||||
import java.util.logging.LogRecord; |
|
||||||
|
|
||||||
/** |
|
||||||
* Created by Administrator on 2017/6/2/0002. |
|
||||||
*/ |
|
||||||
public class DesignerLogAppendThread extends Thread{ |
|
||||||
|
|
||||||
PipedReader reader; |
|
||||||
|
|
||||||
public DesignerLogAppendThread() { |
|
||||||
Logger root = Logger.getRootLogger(); |
|
||||||
// 获取子记录器的输出源
|
|
||||||
Appender appender = root.getAppender("design"); |
|
||||||
// 定义一个未连接的输入流管道
|
|
||||||
reader = new PipedReader(); |
|
||||||
// 定义一个已连接的输出流管理,并连接到reader
|
|
||||||
Writer writer = null; |
|
||||||
try { |
|
||||||
writer = new PipedWriter(reader); |
|
||||||
// 设置 appender 输出流
|
|
||||||
((WriterAppender) appender).setWriter(writer); |
|
||||||
} catch (Throwable e) { |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public void run() { |
|
||||||
// 不间断地扫描输入流
|
|
||||||
Scanner scanner = new Scanner(reader); |
|
||||||
|
|
||||||
// 将扫描到的字符流打印在屏目
|
|
||||||
while (scanner.hasNext()) { |
|
||||||
try { |
|
||||||
Thread.sleep(100); |
|
||||||
String log = scanner.nextLine(); |
|
||||||
if (StringUtils.isEmpty(log)) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
LogRecordTime logRecordTime = new LogRecordTime(new Date(),new LogRecord(Level.INFO, log)); |
|
||||||
DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); |
|
||||||
} catch (Throwable e) { |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,42 @@ |
|||||||
|
package com.fr.design.mainframe.loghandler; |
||||||
|
|
||||||
|
import org.apache.log4j.AppenderSkeleton; |
||||||
|
import org.apache.log4j.Level; |
||||||
|
import org.apache.log4j.spi.LoggingEvent; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Administrator on 2017/7/18 0018. |
||||||
|
*/ |
||||||
|
public class DesignerLogAppender extends AppenderSkeleton { |
||||||
|
|
||||||
|
public DesignerLogAppender() { |
||||||
|
this.layout = new org.apache.log4j.PatternLayout("%d{HH:mm:ss} %t %p [%c] %m%n"); |
||||||
|
} |
||||||
|
|
||||||
|
protected void append(LoggingEvent event) { |
||||||
|
this.subAppend(event); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean requiresLayout() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public synchronized void close() { |
||||||
|
if (this.closed) { |
||||||
|
return; |
||||||
|
} |
||||||
|
this.closed = true; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public void subAppend(LoggingEvent event) { |
||||||
|
synchronized (DesignerLogHandler.getInstance()) { |
||||||
|
Level level = event.getLevel(); |
||||||
|
String msg = this.layout.format(event); |
||||||
|
DesignerLogHandler.getInstance().printRemoteLog(msg, level, new Date()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue