Added text area handle
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user