com.scudata.ide.vdb.VDB Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of esproc Show documentation
Show all versions of esproc Show documentation
SPL(Structured Process Language) A programming language specially for structured data computing.
package com.scudata.ide.vdb;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.Locale;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import com.scudata.common.StringUtils;
import com.scudata.ide.common.AppFrame;
import com.scudata.ide.common.Console;
import com.scudata.ide.common.EditListener;
import com.scudata.ide.common.GM;
import com.scudata.ide.common.GV;
import com.scudata.ide.spl.SPL;
import com.scudata.ide.vdb.commonvdb.*;
import com.scudata.ide.vdb.config.ConfigFile;
import com.scudata.ide.vdb.config.ConfigOptions;
import com.scudata.ide.vdb.control.ConnectionConfig;
import com.scudata.ide.vdb.control.VDBTreeNode;
import com.scudata.ide.vdb.dialog.DialogConnection;
import com.scudata.ide.vdb.dialog.DialogOptions;
import com.scudata.ide.vdb.menu.GCMenu;
import com.scudata.ide.vdb.menu.MenuVDB;
import com.scudata.ide.vdb.menu.ToolbarVDB;
import com.scudata.ide.vdb.panel.PanelEditor;
import com.scudata.ide.vdb.panel.PanelImage;
import com.scudata.ide.vdb.panel.PanelItems;
import com.scudata.ide.vdb.panel.PanelScript;
import com.scudata.ide.vdb.panel.PanelSequence;
import com.scudata.ide.vdb.resources.IdeMessage;
public class VDB extends AppFrame implements EditListener {
private static final long serialVersionUID = 1L;
private ToolbarVDB toolbarVDB = null;
private JSplitPane spCenter = null;
// JPanel panelRight = new JPanel(new BorderLayout());
private VDBTree vdbTree = null;
private MenuVDB menuVDB = null;
private static VDB activeFrame = null;
transient PanelItems panelItems = new PanelItems(this) {
public void doubleClicked(VDBTreeNode node) {
showNodePanel(node);
}
};
transient PanelSequence panelSequence = new PanelSequence(this);
transient PanelImage panelImage = new PanelImage(this);
transient PanelScript panelScript = new PanelScript(this);
transient Timer timer = new Timer();
int initLocation = 100;
public VDB() {
// super("");
init();
}
public MenuVDB getMenuVDB() {
return menuVDB;
}
public ToolbarVDB getToolbarVDB() {
return toolbarVDB;
}
private void init() {
resetInstallDirectories();
try {
ConfigOptions.load();
} catch (Exception e1) {
e1.printStackTrace();
}
// ????????Ȩ???ȼ????Լ???
try {
// Sequence.readLicense(Sequence.P_PROGRAM,
// GM.getAbsolutePath(ConfigOptions.sEsprocLic));
} catch (Exception e1) {
GM.showException(e1);
}
System.setProperty("java.awt.im.style", "on-the-spot");
// try {
// UIManager.setLookAndFeel(LNFManager.getLookAndFeelName());
// initGlobalFontSetting(GC.font);
// } catch (Throwable x) {
// x.printStackTrace();
// }
setTitle(getTitle());
vdbTree = new VDBTree() {
public void showNode(VDBTreeNode node) {
showNodePanel(node);
}
};
getContentPane().setLayout(new BorderLayout());
menuVDB = new MenuVDB();
this.setJMenuBar(menuVDB);
toolbarVDB = new ToolbarVDB();
getContentPane().add(toolbarVDB, BorderLayout.NORTH);
spCenter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
spCenter.setOneTouchExpandable(true);
spCenter.setDividerSize(7);
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
initLocation = (int) (screenWidth * 0.3);
spCenter.setDividerLocation(initLocation);
spCenter.add(new JScrollPane(vdbTree), JSplitPane.LEFT);
// spCenter.add(panelRight, JSplitPane.RIGHT);
getContentPane().add(spCenter, BorderLayout.CENTER);
holdConsole();
this.addWindowListener(new WindowAdapter() {
public void windowActivated(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
// update(GV.appFrame.getGraphics());
if (!exit()) {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
return;
} else {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
});
this.setLocation(0, 0);
setSize(Toolkit.getDefaultToolkit().getScreenSize());
menuVDB.disableConnectMenu();
menuVDB.disableNodeMenu();
menuVDB.disableDataMenu();
// ѡ?е?һ??????
loadConnections();
// ?滻??????Ӧ?õĴ??ڳߴ??????
// com.scudata.ide.common.GM.setDialogDimensionListener(GM.getDDListener());
}
private void showNodePanel(final VDBTreeNode node) {
if (node == null) {
return;
}
timer.cancel();
timer = new Timer();
TimerTask tt = new TimerTask() {
public void run() {
SwingUtilities.invokeLater(new Thread() {
public void run() {
PanelEditor p = null;
switch (node.getType()) {
case VDBTreeNode.TYPE_HOME:
case VDBTreeNode.TYPE_CONNECTION:
case VDBTreeNode.TYPE_FOLDER:
case VDBTreeNode.TYPE_VDB:
p = panelItems;
break;
case VDBTreeNode.TYPE_SEQUENCE:
p = panelSequence;
break;
case VDBTreeNode.TYPE_IMAGE:
p = panelImage;
break;
case VDBTreeNode.TYPE_STRING:
p = panelScript;
break;
}
if (p == null) {
return;
}
p.setNode(node);
spCenter.add(p, JSplitPane.RIGHT);
int location = spCenter.getDividerLocation();
if (location != initLocation && initLocation > 0) {
location = initLocation;
initLocation = 0;
}
spCenter.setDividerLocation(location);
}
});
timer.cancel();
}
};
timer.schedule(tt, 200, 500);
vdbTree.setSelectedNode(node);
}
private VDBTreeNode loadConnections() {
Map cons = ConfigOptions.connections;
if (cons.isEmpty()) {
return null;
}
java.util.Iterator keys = cons.keySet().iterator();
VDBTreeNode node = null;
while (keys.hasNext()) {
String key = keys.next();
String configStr = cons.get(key);
ConnectionConfig cc = ConnectionConfig.fromString(configStr);
if (cc == null)
continue;
node = vdbTree.addConnection(cc);
}
return node;
}
public static JTextArea consoleTextArea = null;
private static Console console = null;
public static void holdConsole() {
if (ConfigOptions.bHoldConsole.booleanValue()) {
if (console != null) {
consoleTextArea = new JTextArea();
console = new Console(consoleTextArea);
}
}
}
public String getTitle() {
return IdeMessage.get().getMessage("frame.title");
}
public boolean closeAll() {
if (vdbTree.isEditChanged()) {
return vdbTree.close();
}
return true;
}
/**
* ?˳?IDE
*
* @return
*/
public boolean exit() {
if (closeAll()) {
saveConfig();
System.exit(0);
return true;
} else {
return false;
}
}
private void saveConfig() {
try {
ConnectionConfig[] ccs = vdbTree.getConnections();
if (ccs != null) {
ConfigOptions.connections.clear();
for (int i = 0; i < ccs.length; i++) {
ConnectionConfig cc = ccs[i];
if (cc.isConnected()) {
cc.close();
}
ConfigOptions.connections.put(cc.getName(), cc.toString());
}
}
ConfigFile.save();
} catch (Exception e) {
GM.writeLog(e);
}
}
public String resetTitle() {
return null;
}
public static void resetInstallDirectories() {
String startHome = System.getProperty("start.home");
if (!StringUtils.isValidString(startHome)) {
startHome = System.getProperty("user.home");
System.setProperty("start.home", startHome);
}
String[] path = new String[] { GC.PATH_CONFIG, GC.PATH_LOGO,
GC.PATH_LOG };
for (int i = 0; i < path.length; i++) {
File f = new File(GM.getAbsolutePath(path[i]));
if (!f.exists()) {
f.mkdirs();
}
}
}
public static VDB getInstance() {
return activeFrame;
}
public static void main(String[] args) {
System.out.println("VDB starting....");
System.out.println("Language??" + Locale.getDefault());
SwingUtilities.invokeLater(new Thread() {
public void run() {
SPL.initLNF();
try {
activeFrame = new VDB();
GV.appFrame = activeFrame;
if (activeFrame != null) {
activeFrame.setVisible(true);
activeFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
VDBTreeNode node = activeFrame.vdbTree.root;
if (node.getChildCount() > 0) {
node = (VDBTreeNode) node.getFirstChild();
activeFrame.vdbTree.setSelectedNode(node);
}
}
System.out.println("VDB started.");
} catch (Throwable t) {
t.printStackTrace();
try {
GM.showException(t);
} catch (Exception e) {
}
System.exit(0);
}
}
});
}
public void executeCmd(short cmdId) {
try {
switch (cmdId) {
// CONNECTION
case GCMenu.iCONN_NEW:
DialogConnection dc = new DialogConnection(
vdbTree.currentConnectionNames());
dc.setVisible(true);
int opt = dc.getOption();
if (opt == JOptionPane.OK_OPTION) {
ConnectionConfig cc = dc.getConnection();
vdbTree.addConnection(cc);
}
return;
case GCMenu.iCONN_OPEN:
vdbTree.openConnect();
return;
case GCMenu.iCONN_SAVE:
vdbTree.saveConnect();
return;
case GCMenu.iCONN_CLOSE:
vdbTree.closeConnect(null);
return;
case GCMenu.iCONN_CONFIG:
vdbTree.configConnect();
return;
case GCMenu.iCONN_DELETE:
vdbTree.deleteConnect();
return;
case GCMenu.iCONN_ACHEIVE:
GM.showException("Acheive");
return;
case GCMenu.iCONN_PURGE:
GM.showException("purge");
return;
case GCMenu.iCONN_EXIT:
exit();
return;
// NODE
case GCMenu.iNODE_COPY:
vdbTree.copyNode();
return;
case GCMenu.iNODE_PASTE:
vdbTree.pasteNode();
return;
case GCMenu.iNODE_DELETE:
vdbTree.deleteNode();
return;
case GCMenu.iNODE_CREATE:
GM.showException("NODE.CREATE");
return;
// data
case GCMenu.iDATA_COPY:
GM.showException("DATA.COPY");
return;
case GCMenu.iDATA_PASTE:
GM.showException("DATA.PASTE");
return;
case GCMenu.iDATA_SAVE:
GM.showException("DATA.SAVE");
return;
case GCMenu.iDATA_IMPORT:
GM.showException("DATA.IMPORT");
return;
// TOOLS
case GCMenu.iTOOLS_BINBROWSER:
// new DialogBinBrowser(this).setVisible(true);
return;
case GCMenu.iTOOLS_OPTION:
new DialogOptions().setVisible(true);
return;
case GCMenu.iCASCADE:
case GCMenu.iLAYER:
case GCMenu.iTILE_HORIZONTAL:
case GCMenu.iTILE_VERTICAL:
// arrangeSheet(cmdId);
default:
break;
}
} catch (Exception e) {
GM.showException(e);
}
}
public void editChanged(Object newVal) {
vdbTree.setEditChanged();
}
public void quit() {
// TODO Auto-generated method stub
}
public JInternalFrame openSheetFile(String fileName) throws Exception {
// TODO Auto-generated method stub
return null;
}
public void changeMenuAndToolBar(JMenuBar menu, JToolBar toolBar) {
// TODO Auto-generated method stub
}
public boolean closeSheet(Object sheet) {
// TODO Auto-generated method stub
return false;
}
@Override
public String getProductName() {
// TODO Auto-generated method stub
return null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy