mnqmainframe.java

来自「UCS (Ultra Corba Simulator) is one more 」· Java 代码 · 共 1,521 行 · 第 1/5 页

JAVA
1,521
字号
package com.corba.mnq.main;

import com.corba.mnq.ns.NSUtil;
import com.corba.mnq.ntf.NtfUtil;
import com.corba.mnq.skelstub.DiiRunnable;
import com.corba.mnq.skelstub.DsiImpl;
import com.corba.mnq.skelstub.SequencePushConsumerImpl;
import com.corba.mnq.tool.CorbaFacility;
import com.corba.mnq.tool.EtcProperties;
import com.corba.mnq.tool.GetEtcTool;
import com.corba.mnq.tool.LoggerTool;
import com.corba.mnq.tool.Warehouse;
import com.corba.mnq.tool.idl.Args;
import com.corba.mnq.tool.idl.IdlBase;
import com.corba.mnq.tool.idl.IdlExcept;
import com.corba.mnq.tool.idl.IdlFile;
import com.corba.mnq.tool.idl.IdlInterface;
import com.corba.mnq.tool.idl.IdlModule;
import com.corba.mnq.tool.idl.IdlOperation;
import com.corba.mnq.tool.idl.IdlRoot;
import com.corba.mnq.tool.idl.InArgs;
import com.corba.mnq.tool.idl.InoutArgs;
import com.corba.mnq.tool.idl.OutArgs;
import com.corba.mnq.tool.idl.type.CTArray;
import com.corba.mnq.tool.idl.type.CTBasic;
import com.corba.mnq.tool.idl.type.CTDeclaration;
import com.corba.mnq.tool.idl.type.CTEnum;
import com.corba.mnq.tool.idl.type.CTExcept;
import com.corba.mnq.tool.idl.type.CTSequence;
import com.corba.mnq.tool.idl.type.CTStruct;
import com.corba.mnq.tool.idl.type.CTUnion;
import com.corba.mnq.tool.idl.type.TypeBase;
import com.corba.mnq.ui.ArgsCellEditor;
import com.corba.mnq.ui.ArgsTable;
import com.corba.mnq.ui.DependencyUtil;
import com.corba.mnq.ui.MNQMutableTreeNode;
import com.corba.mnq.ui.NodeIconRenderer;
import com.corba.mnq.ui.SpecTreeIconRenderer;
import com.corba.mnq.ui.TabPaneHandler;
import com.corba.mnq.ui.jfc.UcsFileFilter;
import com.corba.mnq.ui.text.HighlightTextPane;
import com.corba.mnq.ui.text.idl.IdlTextEditor;
import com.corba.mnq.ui.text.java.JavaTextEditor;
import com.corba.mnq.xls.IcsWriter;
import com.corba.mnq.xls.MatchUtil;
import com.corba.mnq.xls.OpFlowNode;
import com.corba.mnq.xls.ReplaceUtil;
import com.corba.mnq.xls.RunOpFlow;
import com.corba.mnq.xls.XlsUtil;
import com.sun.tools.javac.Main;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.plaf.BorderUIResource;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.Vector;
import java.util.logging.Logger;

import net.infonode.tabbedpanel.Tab;
import net.infonode.tabbedpanel.TabbedPanel;
import net.infonode.tabbedpanel.theme.ShapedGradientTheme;
import net.infonode.tabbedpanel.theme.TabbedPanelTitledTabTheme;
import net.infonode.tabbedpanel.titledtab.TitledTab;
import net.infonode.tabbedpanel.titledtab.TitledTabProperties;

import org.jacorb.orb.util.PrintIOR;
import org.omg.CORBA.Any;
import org.omg.PortableServer.Servant;
import org.omg.PortableServer.POAPackage.ObjectAlreadyActive;
import org.omg.PortableServer.POAPackage.ObjectNotActive;

public class MNQmainFrame extends JFrame implements MouseListener, ListSelectionListener,
        TreeSelectionListener, ActionListener, WindowListener {

    private final class ActionListenerSaveTextArea implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String title = "default";
            String res = "";
            if (tabbedOutput.getSelectedTab().getContentComponent() == commonScroll) {
                title = "Common_Output";
                res = commonPane.getText();
            } else if (tabbedOutput.getSelectedTab().getContentComponent() == clientScroll) {
                title = "Client_Output";
                res = clientPane.getText();
            } else if (tabbedOutput.getSelectedTab().getContentComponent() == serverScroll) {
                title = "Server_Output";
                res = serverPane.getText();
            } else if (tabbedOutput.getSelectedTab().getContentComponent() == seEditorScroll) {
                // ...
                setCursor(new Cursor(Cursor.WAIT_CURSOR));
                File src = new File(CorbaMNQ.projectDir + File.separator + "dsi" + File.separator
                        + "src" + File.separator + onSelected.getClassName() + ".java");

                // String content = seEditorPane.getText();
                String content = seEditor.getText();

                try {
                    if (!src.exists()) {
                        try {
                            src.createNewFile();
                        } catch (IOException ex) {
                            new File(CorbaMNQ.projectDir + File.separator + "dsi" + File.separator
                                    + "src").mkdirs();
                        }
                    }

                    // write the content to file
                    PrintStream ps = new PrintStream(new FileOutputStream(src));
                    ps.print(content);
                    ps.close();

                    String[] args = new String[] { "-d",
                            CorbaMNQ.projectDir + File.separator + "dsi", "-source", "1.4",
                            "-target", "1.4", src.getAbsolutePath() };
                    // return compiled status code
                    int status = javac.compile(args);
                    if (status != 0) {
                        setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                        JOptionPane
                                .showMessageDialog(
                                        MNQmainFrame.frame,
                                        "Wrong with server extentison compiling : detailed, pls. see console output or log",
                                        "operation tip", 2);
                        return;
                    }

                } catch (Exception e1) {
                    setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(MNQmainFrame.frame,
                            "Wrong with server extentison saving : \n" + e1.getMessage(),
                            "operation tip", 2);
                    return;
                }
                setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                JOptionPane.showMessageDialog(MNQmainFrame.frame, src.getName()
                        + " has been successfully saved and compiled!", "operation tip", 2);

                return;
            } else if (tabbedOutput.getSelectedTab().getContentComponent() == notiPane) {
                title = "Notification_Output";
                // res = ;

                int column = notiModel.getColumnCount();
                int row = notiModel.getRowCount();

                // writer headers to file
                for (int x = 0; x < notiHeader.length; x++) {
                    res += "\"" + notiHeader[x] + "\"\t";
                }
                res += "\n";

                // write data to file
                for (int x = 0; x < row; x++) {
                    for (int y = 0; y < column; y++) {
                        String value = (String) notiModel.getValueAt(x, y);
                        if (value == null) {
                            value = "";
                        }
                        res += "\"" + value.replaceAll("\n", "<nl>") + "\"\t";
                    }
                    res += "\n";
                }
            }

            File dir = new File(CorbaMNQ.projectDir + File.separator + "log");
            File file = new File(CorbaMNQ.projectDir + File.separator + "log" + File.separator
                    + title + ".log");
            JFileChooser dlg = new JFileChooser(dir);
            dlg.setSelectedFile(file);
            dlg.setDialogTitle("Save " + title + " as Text...");
            if (dlg.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
                String filename = dlg.getSelectedFile().getAbsolutePath();
                try {
                    FileWriter fout = new FileWriter(filename);
                    fout.write(res);
                    fout.close();
                } catch (Exception e1) {
                    LoggerTool.logStackTrace(e1, MNQmainFrame.LOG);
                }
            }
        }
    }

    /**
     * Constant Table Model. Provides all features of
     * DefaultTableModel, but disables the edit possibility for all
     * cells.
     */
    class ConstantTableModel extends DefaultTableModel {

        private Object lock = new Object();

        /**
         * Overridden constuctor, calling superclass' constructor
         * 
         * @param header
         * @param i
         */
        public ConstantTableModel(String[] header, int i) {
            super(header, i);
        }

        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.table.DefaultTableModel#getValueAt(int,
         *      int)
         */
        public Object getValueAt(int row, int column) {
            Object o = null;
            synchronized (lock) {
                if (this.getRowCount() > 0) {
                    o = super.getValueAt(row, column);
                }
            }
            return o;
        }

        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.table.DefaultTableModel#isCellEditable(int,
         *      int)
         */
        public boolean isCellEditable(int row, int column) {
            // Return false for all cells
            return false;
        }

        /*
         * (non-Javadoc)
         * 
         * @see javax.swing.table.DefaultTableModel#removeRow(int)
         */
        public void removeRow(int row) {
            synchronized (lock) {
                super.removeRow(row);
            }
        }
    }

    public static String CASE_ROOT_STRING = "default.opf";

⌨️ 快捷键说明

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