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

📄 teditordemo.java

📁 全面实现ilog地功能,没有使用第三方lib.
💻 JAVA
字号:
/*
 * This source code is part of TWaver 1.3.1
 *
 * SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 * Copyright 2000-2005 SERVA Software, Inc. All rights reserved.
 */

package demo.editor;

import java.awt.BorderLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;

import twaver.Element;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.network.NetworkToolBarFactory;
import twaver.network.TNetwork;
import twaver.table.TPropertySheet;
import twaver.tree.TTree;
import demo.DemoPane;

public class TEditorDemo extends DemoPane implements DropTargetListener {
    TDataBox box = new TDataBox("DataBox");
    TNetwork network = new TNetwork(box);
    TTree tree = new TTree(box);
    JScrollPane treeScroll = new JScrollPane(tree);
    JPanel rootPane = new JPanel();
    BorderLayout rootPaneLayout = new BorderLayout();
    JLabel statusPane = new JLabel();
    JPanel mainPane = new JPanel();
    BorderLayout mainPaneLayout = new BorderLayout();
    JSplitPane rootSplit = new JSplitPane();
    JPanel leftPane = new JPanel();
    JPanel rightPane = new JPanel();
    BorderLayout rightPaneLayout = new BorderLayout();
    JSplitPane leftSplit = new JSplitPane();
    BorderLayout leftPaneLayout = new BorderLayout();
    PalettePane palettePane = new PalettePane(network);
    JPanel hierarchyPane = new JPanel();
    BorderLayout hierarchyPaneLayout = new BorderLayout();
    TPropertySheet sheet = new TPropertySheet(box);
    JScrollPane sheetScroll = new JScrollPane(sheet);



    public TEditorDemo() {
        try {
            jbInit();
            // set network
            new DropTarget(network.getCanvas(), DnDConstants.ACTION_REFERENCE, this);
            network.setElementMakedVisibleOnSelected(true);
            network.setElementDeletable(true);
            network.setElementDraggable(true);
            network.setElementResizable(true);
            // set tree
            tree.setElementMakedVisibleOnSelected(true);
            tree.setElementDeletable(true);
            tree.setElementDraggable(true);
            // set propertySheet
            sheet.setElementEditable(true);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }


    private void jbInit() throws Exception {
        network.setToolbar(null);
        JToolBar toolbar = NetworkToolBarFactory.getToolBar(TWaverConst.DEFAULT_TOOLBAR, network);
        this.add(toolbar, BorderLayout.NORTH);
        rootPane.setLayout(rootPaneLayout);
        statusPane.setText("Ready");
        mainPane.setLayout(mainPaneLayout);
        rightPane.setLayout(rightPaneLayout);
        leftPane.setLayout(leftPaneLayout);
        leftSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);
        leftSplit.setContinuousLayout(true);
        rootSplit.setContinuousLayout(true);
        hierarchyPane.setLayout(hierarchyPaneLayout);
        this.add(rootPane, BorderLayout.CENTER);
        rootPane.add(statusPane, BorderLayout.SOUTH);
        rootPane.add(mainPane, BorderLayout.CENTER);
        mainPane.add(rootSplit, BorderLayout.CENTER);
        rootSplit.add(leftPane, JSplitPane.LEFT);
        leftPane.add(leftSplit, BorderLayout.CENTER);
        leftSplit.add(hierarchyPane, JSplitPane.TOP);
        rootSplit.add(rightPane, JSplitPane.RIGHT);
        rightPane.add(network, BorderLayout.CENTER);
        rightPane.add(palettePane, BorderLayout.NORTH);
        hierarchyPane.add(treeScroll, BorderLayout.CENTER);
        treeScroll.getViewport().add(tree, null);
        leftSplit.add(sheetScroll, JSplitPane.BOTTOM);
        sheetScroll.getViewport().add(sheet, null);
        leftSplit.setDividerLocation(200);
        rootSplit.setDividerLocation(200);
        network.getCanvas().addMouseListener(new MouseAdapter() {
            public void mouseExited(MouseEvent e) {
                statusPane.setText("Ready");
            }
        });
        network.getCanvas().addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                int x = (int)(e.getPoint().getX() / network.getZoomer().getZoom());
                int y = (int)(e.getPoint().getY() / network.getZoomer().getZoom());
                statusPane.setText("x=" + x + " y=" + y);
            }

            public void mouseMoved(MouseEvent e) {
                int x = (int)(e.getPoint().getX() / network.getZoomer().getZoom());
                int y = (int)(e.getPoint().getY() / network.getZoomer().getZoom());
                statusPane.setText("x=" + x + " y=" + y);
            }
        });
    }

    public void dragEnter(DropTargetDragEvent dtde) {
    }

    public void dragOver(DropTargetDragEvent dtde) {
    }

    public void dropActionChanged(DropTargetDragEvent dtde) {
    }

    public void dragExit(DropTargetEvent dte) {
    }

    public void drop(DropTargetDropEvent e) {
        try {
        	if (e.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                String className = (String) e.getTransferable().getTransferData(DataFlavor.stringFlavor);
                Element element = (Element) Class.forName(className).newInstance();
                element.setName(className.substring(className.lastIndexOf(".") + 1));
                double x = e.getLocation().getX()/network.getZoomer().getZoom() - element.getWidth() / 2;
                double y = e.getLocation().getY()/network.getZoomer().getZoom() - element.getHeight() / 2;
                x = x > 0 ? x : 0;
                y = y > 0 ? y : 0;
                element.setLocation(x, y);
                box.addElement(element);
                //set current subnetwork to this new element's parent.
                if (network.getSubNetwork() != null) {
                    element.setParent(network.getSubNetwork());
                }
        	}
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }

	public String getTitle() {
		return "Editor Demo";
	}

	public String getHelp() {
		return "This demo is a simple edit tools "+
            "for creating network topology or equipment chassis."+
            " You can edit, open or save data via XML file."+
            "<p>Drag an object from palette and drop it on canvas to create new element.";
	}
}

⌨️ 快捷键说明

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