coder-client/src/com/coder/client/gui/editor/EditorWindow.java

148 lines
3.8 KiB
Java
Raw Normal View History

2015-10-20 14:26:58 +00:00
package com.coder.client.gui.editor;
2015-10-20 06:56:14 +00:00
2015-10-20 14:26:58 +00:00
import java.io.IOException;
2015-10-20 06:56:14 +00:00
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.ResourceBundle;
import org.controlsfx.control.PropertySheet;
import org.controlsfx.property.editor.PropertyEditor;
2015-10-20 14:26:58 +00:00
import com.coder.client.gui.GuiWindow;
2015-10-20 06:56:14 +00:00
import com.coder.client.property.CheckBoxProperty;
import com.coder.client.property.CoderClientProperty;
import com.coder.client.property.ComboBoxProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.util.Callback;
2015-10-20 14:26:58 +00:00
public class EditorWindow extends GuiWindow {
2015-10-20 06:56:14 +00:00
private HashSet<EditorWindowListener> listsners;
2015-10-20 06:56:14 +00:00
@FXML private TreeView<String> fileTreeView;
@FXML private TextArea editTextArea;
@FXML private PropertySheet propertySheet;
@FXML private Button compileButton;
@FXML private Button runButton;
@FXML private Button exitButton;
@FXML private Button changeProjectButton;
2015-10-20 06:56:14 +00:00
2015-10-20 14:26:58 +00:00
public EditorWindow() throws IOException{
super(EditorWindow.class.getResource("EditorWindow.fxml"));
listsners = new HashSet<EditorWindowListener>();
2015-10-20 06:56:14 +00:00
}
@Override
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
setupPropertySheet();
setupFileTreeView();
2015-10-20 14:26:58 +00:00
}
@Override
protected void willShow(){
for(EditorWindowListener listener : listsners){
listener.willShow();
}
2015-10-20 06:56:14 +00:00
}
@FXML
protected void handleRun(ActionEvent event){
for(EditorWindowListener listener : listsners){
listener.run();
}
2015-10-20 06:56:14 +00:00
}
@FXML
protected void handleCompile(ActionEvent event){
for(EditorWindowListener listener : listsners){
listener.compile();
}
2015-10-20 06:56:14 +00:00
}
@FXML
protected void handleChangeProject(ActionEvent event){
for(EditorWindowListener listener : listsners){
listener.changeProject();
}
}
@FXML
protected void handleExit(ActionEvent event){
for(EditorWindowListener listener : listsners){
listener.exit();
}
}
2015-10-20 06:56:14 +00:00
private void setupFileTreeView(){
fileTreeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TreeItem<String>>() {
@Override
public void changed(ObservableValue<? extends TreeItem<String>> item, TreeItem<String> oldValue, TreeItem<String> newValue) {
if(newValue != fileTreeView.getRoot()){
System.out.println("INFO: item " + newValue + " selected");
}
}
});
TreeItem<String> root = new TreeItem<String>("root");
root.setExpanded(true);
fileTreeView.setRoot(root);
}
private void setupPropertySheet(){
//handle custom ProperySheet.Item's editor
propertySheet.setPropertyEditorFactory(new Callback<PropertySheet.Item, PropertyEditor<?>>(){
@Override
public PropertyEditor<?> call(PropertySheet.Item param) {
//only support internal types
if(param instanceof CoderClientProperty){
return ((CoderClientProperty<?>)param).getEditor();
}
//not a internal property type
return null;
}
});
propertySheet.getItems().clear();
ArrayList<String> boards = new ArrayList<String>();
boards.add("UNO");
boards.add("Mega");
ComboBoxProperty p1 = new ComboBoxProperty("Port", null, boards);
propertySheet.getItems().add(p1);
CheckBoxProperty p2 = new CheckBoxProperty("Melt?", false);
propertySheet.getItems().add(p2);
}
public void addEditorWindowListener(EditorWindowListener listener) {
2015-10-20 14:26:58 +00:00
this.listsners.add(listener);
2015-10-20 06:56:14 +00:00
}
@Override
protected String getTitle() {
return "Coder Client";
}
@Override
public void setErrorMessage(String msg) {
// TODO Auto-generated method stub
}
public void setProjectName(String name) {
fileTreeView.getRoot().setValue(name);
}
2015-10-20 06:56:14 +00:00
}