Added text area handle

This commit is contained in:
Clément Fournier
2017-08-18 13:53:31 +02:00
parent e7c1a520d6
commit 808ef0cc89
3 changed files with 57 additions and 91 deletions

View File

@@ -26,11 +26,9 @@ public final class LanguageRegistry {
private LanguageRegistry() {
List<Language> languagesList = new ArrayList<>();
ServiceLoader<Language> languageLoader = ServiceLoader.load(Language.class);
Iterator<Language> iterator = languageLoader.iterator();
while (iterator.hasNext()) {
for (Language aLanguageLoader : languageLoader) {
try {
Language language = iterator.next();
languagesList.add(language);
languagesList.add(aLanguageLoader);
} catch (UnsupportedClassVersionError e) {
// Some languages require java8 and are therefore only available
// if java8 or later is used as runtime.
@@ -120,9 +118,7 @@ public final class LanguageRegistry {
public static List<LanguageVersion> findAllVersions() {
List<LanguageVersion> versions = new ArrayList<>();
for (Language language : getLanguages()) {
for (LanguageVersion languageVersion : language.getVersions()) {
versions.add(languageVersion);
}
versions.addAll(language.getVersions());
}
return versions;
}

View File

@@ -6,6 +6,7 @@ package net.sourceforge.pmd.util.fxdesigner.fxdesigner;
import java.io.StringReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
@@ -22,19 +23,23 @@ import javafx.fxml.Initializable;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.TextArea;
import javafx.scene.control.ToggleGroup;
/**
* @author Clément Fournier
*/
class DesignerController implements Initializable {
public class DesignerController implements Initializable {
@FXML
public TextArea codeEditorArea;
@FXML
private Menu languageMenu;
private LanguageVersion selectedLanguageVersion;
private Map<LanguageVersion, RadioMenuItem> languageRadioMenuMap;
private Map<LanguageVersion, RadioMenuItem> languageRadioMenuMap = new HashMap<>();
@Override
@@ -47,13 +52,11 @@ class DesignerController implements Initializable {
private void initializeLanguageVersionMenu() {
LanguageVersion[] supported = DesignerUtil.getSupportedLanguageVersions();
ObservableList<MenuItem> items = languageMenu.getItems();
assert items.size() == 0;
System.out.println(supported);
ToggleGroup group = new ToggleGroup();
for (LanguageVersion version : supported) {
RadioMenuItem item = new RadioMenuItem(version.getShortName());
item.setToggleGroup(group);
items.add(item);
languageRadioMenuMap.put(version, item);
}
@@ -68,52 +71,15 @@ class DesignerController implements Initializable {
private Node getCompilationUnit() {
LanguageVersionHandler languageVersionHandler = getLanguageVersionHandler();
return getCompilationUnit(languageVersionHandler);
return getCompilationUnit(languageVersionHandler, codeEditorArea.getText());
}
private Node getCompilationUnit(LanguageVersionHandler languageVersionHandler) {
return null; //getCompilationUnit(languageVersionHandler, codeEditorPane.getText());
}
private LanguageVersion getLanguageVersion() {
return DesignerUtil.getSupportedLanguageVersions()[selectedLanguageVersionIndex()];
}
private void setLanguageVersion(LanguageVersion languageVersion) {
if (languageVersion != null) {
LanguageVersion[] versions = DesignerUtil.getSupportedLanguageVersions();
for (int i = 0; i < versions.length; i++) {
LanguageVersion version = versions[i];
if (languageVersion.equals(version)) {
// languageVersionMenuItems[i].setSelected(true);
break;
}
}
}
}
private int selectedLanguageVersionIndex() {
/* for (int i = 0; i < languageVersionMenuItems.length; i++) {
if (languageVersionMenuItems[i].isSelected()) {
return i;
}
}
*/
throw new RuntimeException("Initial default language version not specified");
}
LanguageVersionHandler getLanguageVersionHandler() {
LanguageVersion languageVersion = getLanguageVersion();
return languageVersion.getLanguageVersionHandler();
return selectedLanguageVersion.getLanguageVersionHandler();
}
static Node getCompilationUnit(LanguageVersionHandler languageVersionHandler, String code) {
private static Node getCompilationUnit(LanguageVersionHandler languageVersionHandler, String code) {
Parser parser = languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions());
Node node = parser.parse(null, new StringReader(code));
languageVersionHandler.getSymbolFacade().start(node);

View File

@@ -1,45 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<AnchorPane prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="net.sourceforge.pmd.util.fxdesigner.fxdesigner.Designer">
<children>
<BorderPane prefHeight="600.0" prefWidth="900.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu fx:id="languageMenu" mnemonicParsing="false" text="Language" />
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<TitledPane prefHeight="200.0" prefWidth="200.0" text="XPath" BorderPane.alignment="CENTER" />
</bottom>
<center>
<SplitPane dividerPositions="0.5" prefHeight="160.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<TextArea layoutX="-13.0" layoutY="-31.0" prefHeight="200.0" prefWidth="200.0" promptText="Your code here..." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
</items>
</SplitPane>
</center></BorderPane>
</children>
<AnchorPane prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="net.sourceforge.pmd.util.fxdesigner.fxdesigner.DesignerController">
<children>
<BorderPane prefHeight="600.0" prefWidth="900.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu fx:id="languageMenu" mnemonicParsing="false" text="Language" />
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<TitledPane prefHeight="200.0" prefWidth="200.0" text="XPath" BorderPane.alignment="CENTER" />
</bottom>
<center>
<SplitPane dividerPositions="0.5" prefHeight="160.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<TextArea fx:id="codeEditorArea" layoutX="-13.0" layoutY="-31.0" prefHeight="200.0" prefWidth="200.0" promptText="Your code here..." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
</items>
</SplitPane>
</center>
</BorderPane>
</children>
</AnchorPane>