/**
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kevoree.tools.ui.editor.standalone;
import com.explodingpixels.macwidgets.*;
import org.kevoree.KevoreeFactory;
import org.kevoree.impl.DefaultKevoreeFactory;
import org.kevoree.tools.ui.editor.KevoreeEditor;
import org.kevoree.tools.ui.editor.UIEventHandler;
import org.kevoree.tools.ui.editor.command.Command;
import org.kevoree.tools.ui.editor.command.LoadContinuousRemoteModelUICommand;
import org.kevoree.tools.ui.editor.kloud.MiniKloudForm;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Hello world!
*/
public class App {
static Boolean consoleShow = false;
static Boolean kevsShow = false;
static Boolean errorShow = false;
static int dividerPos = 0;
static LocalKevsShell kevsPanel = new LocalKevsShell();
public static void main(final String[] args) throws Exception {
System.setSecurityManager(null);
// System.setProperty("apple.awt.graphics.UseQuartz","true");
//System.setProperty("sun.java2d.opengl","true");
// System.setProperty("apple.awt.graphics.UseOpenGL","true");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
System.setProperty("apple.laf.useScreenMenuBar", "true");
KevoreeFactory kevoreeFactory = new DefaultKevoreeFactory();
final KevoreeEditor artpanel = new KevoreeEditor();
kevsPanel.setKernel(artpanel.getPanel().getKernel());
String frameName = "Kevoree Editor - " + kevoreeFactory.getVersion();
JFrame jframe = new JFrame(frameName);
MacUtils.makeWindowLeopardStyle(jframe.getRootPane());
UnifiedToolBar toolBar = new UnifiedToolBar();
org.kevoree.tools.ui.editor.ErrorPanel.setTopPanel(toolBar);
// JButton button = new JButton("Toogle console");
// button.putClientProperty("JButton.buttonType", "textured");
AbstractButton toogleConsole = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("terminal.png");
ImageIcon icon = new ImageIcon(url);
toogleConsole =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("Console", icon));
toogleConsole.setEnabled(false);
toolBar.addComponentToLeft(toogleConsole);
} catch (Exception e) {
e.printStackTrace();
}
AbstractButton toogleErrorPanel = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("status_unknown.png");
ImageIcon icon = new ImageIcon(url);
toogleErrorPanel =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("Error", icon));
toogleErrorPanel.setEnabled(false);
toolBar.addComponentToLeft(toogleErrorPanel);
} catch (Exception e) {
e.printStackTrace();
}
AbstractButton toogleKevScriptEditor = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("runprog.png");
ImageIcon icon = new ImageIcon(url);
toogleKevScriptEditor =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("KevScript", icon));
toogleKevScriptEditor.setEnabled(false);
toolBar.addComponentToLeft(toogleKevScriptEditor);
} catch (Exception e) {
e.printStackTrace();
}
AbstractButton toogleTypeEditionMode = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("package.png");
ImageIcon icon = new ImageIcon(url);
toogleTypeEditionMode = MacButtonFactory.makeUnifiedToolBarButton(new JButton("TypeMode", icon));
toogleTypeEditionMode.setEnabled(false);
toolBar.addComponentToLeft(toogleTypeEditionMode);
} catch (Exception e) {
e.printStackTrace();
}
AbstractButton toogleSyncSend = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("1371014427_File Send.png");
ImageIcon icon = new ImageIcon(url);
toogleSyncSend =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("WSPush", icon));
toogleSyncSend.setEnabled(false);
toolBar.addComponentToRight(toogleSyncSend);
} catch (Exception e) {
e.printStackTrace();
}
AbstractButton toogleSync = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("1371014235_agt_reload.png");
ImageIcon icon = new ImageIcon(url);
toogleSync =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("WSSync", icon));
toogleSync.setEnabled(false);
toolBar.addComponentToRight(toogleSync);
} catch (Exception e) {
e.printStackTrace();
}
/*
AbstractButton toogleKloud = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("kloud.png");
ImageIcon icon = new ImageIcon(url);
toogleKloud =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("Kloud", icon));
toogleKloud.setEnabled(false);
toolBar.addComponentToRight(toogleKloud);
} catch (Exception e) {
e.printStackTrace();
}
*/
AbstractButton toogleMiniKloud = null;
try {
java.net.URL url = App.class.getClassLoader().getResource("kloud.png");
ImageIcon icon = new ImageIcon(url);
toogleMiniKloud =
MacButtonFactory.makeUnifiedToolBarButton(
new JButton("MiniKloud", icon));
toogleMiniKloud.setEnabled(false);
toolBar.addComponentToRight(toogleMiniKloud);
} catch (Exception e) {
e.printStackTrace();
}
jframe.add(toolBar.getComponent(), BorderLayout.NORTH);
toolBar.installWindowDraggerOnWindow(jframe);
toolBar.disableBackgroundPainter();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setPreferredSize(new Dimension(800, 600));
jframe.setJMenuBar(artpanel.getMenuBar());
// jframe.add(artpanel.getPanel(), BorderLayout.CENTER);
// jframe.add(new LogPanel(), BorderLayout.SOUTH);
/*
String layoutDef =
"(COLUMN (LEAF name=center weight=0.95) (LEAF name=bottom weight=0.05))";
MultiSplitLayout.Node modelRoot =
MultiSplitLayout.parseModel(layoutDef);
JXMultiSplitPane multiSplitPane = new JXMultiSplitPane();
multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
multiSplitPane.add(artpanel.getPanel(), "center");
multiSplitPane.add(new LogPanel(), "bottom");
*/
final LogPanel logPanel = new LogPanel();
final JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
artpanel.getPanel(), logPanel);
//splitPane.setResizeWeight(0.3);
splitPane.setOneTouchExpandable(true);
splitPane.setContinuousLayout(true);
splitPane.setDividerSize(6);
splitPane.setDividerLocation(200);
splitPane.setResizeWeight(1.0);
splitPane.setBorder(null);
final JPanel p = new JPanel();
p.setOpaque(false);
p.setLayout(new BorderLayout());
p.add(artpanel.getPanel(), BorderLayout.CENTER);
jframe.add(p, BorderLayout.CENTER);
final BottomBar bottomBar = new BottomBar(BottomBarSize.EXTRA_SMALL);
final javax.swing.JLabel labelBot = MacWidgetFactory.createEmphasizedLabel("");
bottomBar.addComponentToLeft(labelBot);
UIEventHandler.addCommand(new Command() {
@Override
public void execute(Object p) {
labelBot.setText(p.toString());
// labelBot.setFont(new Font("Serif", Font.PLAIN, 10));
}
});
/*
JProgressBar jbar = new JProgressBar(0, 100);
jbar.setSize(250, 10);
jbar.setValue(0);
jbar.setVisible(true);
jbar.setStringPainted(true);
jbar.setString("Starting test run");
jbar.setIndeterminate(true);
bottomBar.addComponentToLeft(jbar);
*/
//bottomBar.addComponentToCenter(MacWidgetFactory.createEmphasizedLabel("Kevoree Model"));
jframe.add(bottomBar.getComponent(), BorderLayout.SOUTH);
bottomBar.installWindowDraggerOnWindow(jframe);
jframe.pack();
jframe.setVisible(true);
assert toogleConsole != null;
final AbstractButton finalToogleConsole = toogleConsole;
assert toogleKevScriptEditor != null;
final AbstractButton finalToogleKevScriptEditor = toogleKevScriptEditor;
final AbstractButton finalToogleErrorPanel = toogleErrorPanel;
//final AbstractButton finalToggleKloudDialog = toogleKloud;
final AbstractButton finalToggleMiniKloudDialog = toogleMiniKloud;
toogleConsole.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
finalToogleConsole.setEnabled(!finalToogleConsole.isEnabled());
finalToogleKevScriptEditor.setEnabled(false);
finalToogleErrorPanel.setEnabled(false);
kevsShow = false;
errorShow = false;
if (consoleShow) {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(artpanel.getPanel(), BorderLayout.CENTER);
p.repaint();
p.revalidate();
} else {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(splitPane, BorderLayout.CENTER);
splitPane.setTopComponent(artpanel.getPanel());
splitPane.setBottomComponent(logPanel);
splitPane.setDividerLocation(dividerPos);
p.repaint();
p.revalidate();
}
consoleShow = !consoleShow;
}
});
toogleKevScriptEditor.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
finalToogleKevScriptEditor.setEnabled(!finalToogleKevScriptEditor.isEnabled());
finalToogleConsole.setEnabled(false);
finalToogleErrorPanel.setEnabled(false);
consoleShow = false;
errorShow = false;
if (kevsShow) {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(artpanel.getPanel(), BorderLayout.CENTER);
p.repaint();
p.revalidate();
} else {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(splitPane, BorderLayout.CENTER);
splitPane.setTopComponent(artpanel.getPanel());
//LocalKevsShell kevsPanel = new LocalKevsShell();
splitPane.setBottomComponent(kevsPanel);
splitPane.setDividerLocation(dividerPos);
p.repaint();
p.revalidate();
}
kevsShow = !kevsShow;
}
});
toogleErrorPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
finalToogleErrorPanel.setEnabled(!finalToogleErrorPanel.isEnabled());
finalToogleConsole.setEnabled(false);
finalToogleKevScriptEditor.setEnabled(false);
consoleShow = false;
kevsShow = false;
if (errorShow) {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(artpanel.getPanel(), BorderLayout.CENTER);
p.repaint();
p.revalidate();
} else {
dividerPos = splitPane.getDividerLocation();
p.removeAll();
p.add(splitPane, BorderLayout.CENTER);
splitPane.setTopComponent(artpanel.getPanel());
splitPane.setBottomComponent(org.kevoree.tools.ui.editor.ErrorPanel.getPanel());
splitPane.setDividerLocation(dividerPos);
p.repaint();
p.revalidate();
}
errorShow = !errorShow;
}
});
final AbstractButton finalToogleTypeEditionMode = toogleTypeEditionMode;
toogleTypeEditionMode.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
finalToogleTypeEditionMode.setEnabled(!finalToogleTypeEditionMode.isEnabled());
if (finalToogleTypeEditionMode.isEnabled()) {
artpanel.getPanel().setTypeEditor();
} else {
artpanel.getPanel().unsetTypeEditor();
}
p.repaint();
p.revalidate();
}
});
/*
final KloudForm kloudForm = new KloudForm(artpanel, finalToggleKloudDialog);
toogleKloud.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// Display the Dialog to configure the kloud and send the model on it
finalToggleKloudDialog.setEnabled(!finalToggleKloudDialog.isEnabled());
if (finalToggleKloudDialog.isEnabled()) {
// display the Dialog
kloudForm.display();
} else {
// hide the Dialog
kloudForm.hide();
}
}
}); */
final MiniKloudForm minikloudForm = new MiniKloudForm(artpanel, finalToggleMiniKloudDialog);
toogleMiniKloud.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// Display the Dialog to configure the kloud and send the model on it
boolean toggle = !finalToggleMiniKloudDialog.isEnabled();
if (toggle) {
/*if (*/
minikloudForm.startMiniCloud();/*) {
finalToggleMiniKloudDialog.setEnabled(toggle);
}*/
} else {
/*if (*/
minikloudForm.shutdownMiniCloud();/*) {
finalToggleMiniKloudDialog.setEnabled(toggle);
}*/
}
}
});
final LoadContinuousRemoteModelUICommand cmdLMORemote2 = new LoadContinuousRemoteModelUICommand();
final AbstractButton finalToogleSync = toogleSync;
final AbstractButton finalToogleSyncSend = toogleSyncSend;
cmdLMORemote2.setKernel(artpanel.getPanel().getKernel());
toogleSync.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (finalToogleSync.isEnabled()) {
cmdLMORemote2.close();
finalToogleSync.setEnabled(false);
finalToogleSyncSend.setEnabled(false);
} else {
cmdLMORemote2.execute(null);
finalToogleSync.setEnabled(true);
finalToogleSyncSend.setEnabled(true);
}
}
});
artpanel.getPanel().getKernel().getModelHandler().addListenerCommand(new Command(){
@Override
public void execute(Object p) {
if (finalToogleSyncSend.isEnabled() && !cmdLMORemote2.currentUpdate()) {
cmdLMORemote2.send();
}
}
});
finalToogleSyncSend.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (finalToogleSyncSend.isEnabled()) {
cmdLMORemote2.send();
}
}
});
dividerPos = splitPane.getDividerLocation();
}
});
}
}