⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 designingpanel.java

📁 SWING的界面UI包 SWING的界面UI包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * DesigningPanel.java
 *
 * Created on August 3, 2007, 4:16 PM
 */
package dyno.swing.designer.main;

import dyno.swing.designer.beans.SwingDesigner;
import dyno.swing.designer.beans.Util;
import dyno.swing.designer.beans.actions.ActionCategory;
import dyno.swing.designer.beans.code.CodeSeed;
import dyno.swing.designer.beans.toolkit.BeanInfoToggleButton;
import dyno.swing.designer.beans.toolkit.ComponentPalette;
import dyno.swing.designer.main.actions.AboutAction;
import dyno.swing.designer.main.actions.ExitAction;
import dyno.swing.designer.main.actions.NewFileAction;
import dyno.swing.designer.main.actions.NewFileWorker;
import dyno.swing.designer.main.actions.OpenFileAction;
import dyno.swing.designer.main.actions.SaveAsFileAction;
import dyno.swing.designer.main.actions.SaveFileAction;
import dyno.swing.designer.main.actions.SourceParser;
import dyno.swing.designer.main.actions.SourceWorker;
import dyno.swing.designer.properties.types.Item;
import dyno.swing.designer.treeview.TreePalette;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
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.BasicSplitPaneUI;

/**
 *
 * @author  William Chen
 */
public class DesigningPanel extends JPanel implements InvocationHandler {

    private double overallRatio = 0.73;
    private double toolkitRatio = 0.2;
    private double middleRatio = 0.75;
    private CodeSeed seed;
    private boolean dirty;

    /** Creates new form DesigningPanel */
    public DesigningPanel() {
        initComponents();
        seed = new CodeSeed(designer);
        designer.addInvocationHandler(this);
    }

    public PrintWriter getWriter() {
        return new PrintWriter(logger.getWriter());
    }

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if (isStateChange(method.getName())) {
            setDirty(true);
        } 
        return null;
    }

    public void setDirty(boolean d) {
        dirty = d;
        getSaveFileAction().setEnabled(dirty);
    }

    private boolean isStateChange(String methodName) {
        return !dirty && (methodName.equals("componentAdded") || methodName.equals("componentDeleted") || methodName.equals("componentCut") || methodName.equals("componentPasted") || methodName.equals("componentEdited") || methodName.equals("componentResized") || methodName.equals("componentMoved"));
    }

    public void setSource(String code) {
        txtSource.setText(code);
    }

    public void logging(String message) {
        logger.logging(message);
    }

    public void logging(Exception e) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        pw.close();
        logger.logging(sw.toString());
    }

    public void setProgressVisible(boolean b) {
        CardLayout card = (CardLayout) getCardPanel().getLayout();
        card.show(getCardPanel(), b ? "progress" : "designer");
    }

    public String getSource() {
        return txtSource.getText();
    }

    private JSplitPane getSpToolkit() {
        if (spToolkit == null) {
            spToolkit = new JSplitPane();
            spMiddle = getSpMiddle();
            spToolkit.setRightComponent(spMiddle);
            palette = getPalette();
            palette.addActionListener(new ActionListener() {

                        public void actionPerformed(ActionEvent evt) {
                            paletteActionPerformed(evt);
                        }
                    });
            spToolkit.setLeftComponent(palette);
        }
        return spToolkit;
    }

    private ComponentPalette getPalette() {
        if (palette == null) {
            palette = new ComponentPalette(designer);
            designer.setPalette(palette);
        }
        return palette;
    }

    private JSplitPane getSpMiddle() {
        if (spMiddle == null) {
            spMiddle = new JSplitPane();
            spMiddle.setOrientation(JSplitPane.VERTICAL_SPLIT);
            dsgPanel = getDsgPanel();
            spMiddle.setTopComponent(dsgPanel);
            logger = getLogger();
            spMiddle.setBottomComponent(logger);
        }
        return spMiddle;
    }

    private JPanel getDsgPanel() {
        if (dsgPanel == null) {
            dsgPanel = new JPanel();
            dsgPanel.setBorder(BorderFactory.createLineBorder(new Color(127, 157, 185)));
            dsgPanel.setLayout(new BorderLayout());
            dsgPanel.setBackground(Color.white);
            cardPanel = getCardPanel();
            dsgPanel.add(cardPanel, BorderLayout.CENTER);
        }
        return dsgPanel;
    }

    private JPanel getCardPanel() {
        if (cardPanel == null) {
            cardPanel = new JPanel(new CardLayout());
            pPanel = getPPanel();
            cardPanel.add(pPanel, "progress");
            spDesigner = getSpDesigner();
            cardPanel.add(spDesigner, "designer");
        }
        return cardPanel;
    }

    private ProgressPanel getPPanel() {
        if (pPanel == null) {
            pPanel = new ProgressPanel();
        }
        return pPanel;
    }

    private JScrollPane getSpDesigner() {
        if (spDesigner == null) {
            spDesigner = new JScrollPane();
            designer = getDesigner();
            spDesigner.getViewport().setOpaque(true);
            spDesigner.getViewport().setBackground(Color.white);
            spDesigner.getViewport().setView(designer);
        }
        return spDesigner;
    }

    private JToolBar getDesignerTools() {
        if (designerTools == null) {
            designerTools = new JToolBar();
            designerTools.setFloatable(false);
            designerTools.add(getNewFileAction());
            designerTools.add(getOpenFileAction());
            designerTools.add(getSaveFileAction());
            Action[] actions = designer.getActions();
            initActionButton(actions);
        }
        return designerTools;
    }

    public SwingDesigner getDesigner() {
        if (designer == null) {
            designer = new SwingDesigner();
        }
        return designer;
    }

    private LoggingPanel getLogger() {
        if (logger == null) {
            logger = new LoggingPanel();
        }
        return logger;
    }

    private TreePalette getRightPalette() {
        if (rightPalette == null) {
            rightPalette = new TreePalette(designer);            
        }
        return rightPalette;
    }

    public void setRootComponent(Component comp) {
        designer.setRootComponent(comp);
        designer.repaint();
    }

    public void refreshRightPalette() {
        rightPalette.refreshUI();
    }

    private JSplitPane getSpOverall() {
        if (spOverall == null) {
            spOverall = new JSplitPane();
            spToolkit = getSpToolkit();
            rightPalette = getRightPalette();
            spOverall.setLeftComponent(spToolkit);
            spOverall.setRightComponent(rightPalette);
        }
        return spOverall;
    }

    private void initActionButton(Action[] actions) {
        for (Action action : actions) {
            if (action instanceof ActionCategory) {
                designerTools.addSeparator();
                Action[] sub = ((ActionCategory) action).getSubActions();
                initActionButton(sub);
            } else {
                designerTools.add(action);
            }
        }
    }

    private void initComponents() {
        setLayout(new BorderLayout());

        guiDsgPanel = getGuiDsgPanel();
        add(guiDsgPanel, BorderLayout.CENTER);
        menuBar = getMenuBar();
        add(menuBar, BorderLayout.NORTH);
    }

    private JMenuBar getMenuBar() {
        if (menuBar == null) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -