package com.digiarea.closure.model.controller; import java.net.URL; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.ContentDisplay; import javafx.scene.control.ContextMenu; import javafx.scene.control.Control; import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.control.ProgressBar; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.control.TabPane.TabClosingPolicy; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.TableRow; import javafx.scene.control.TableView; import javafx.scene.control.Tooltip; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.RowConstraints; import javafx.scene.layout.VBox; import javafx.stage.WindowEvent; import javafx.util.Callback; import com.digiarea.closure.model.bind.ModelFacade; import com.digiarea.closure.model.providers.ConsoleCellFactory; import com.digiarea.closure.preferences.model.Editor; import com.digiarea.closure.preferences.model.Editors; import com.digiarea.closure.preferences.model.bind.PreferencesSerializer; import com.digiarea.closurefx.IConstants; import com.digiarea.closurefx.ResourceUtils; import com.digiarea.closurefx.build.console.ClosureStatus; import com.digiarea.closurefx.build.console.GSSConsoleManager; import com.digiarea.closurefx.build.validation.IStatus; import com.digiarea.closurefx.build.validation.Status; import com.digiarea.closurefx.editors.EditorLoader; /** * FXML Controller class * * @author daginno */ public class GSSConsoleSectionController extends ClosureController implements Initializable, IConsole { @FXML private Tab tabProblems; @FXML private Tab tabMessages; @FXML private ProgressBar progressBar; @FXML private TableView<ClosureStatus> controlProblems; @FXML private ListView<Status> controlConsole; @FXML private TableColumn<ClosureStatus, IStatus.StatusType> controlProblemsLevel; @FXML private TableColumn<ClosureStatus, String> controlProblemsDescription; @FXML private TableColumn<ClosureStatus, String> controlProblemsResource; @FXML private TableColumn<ClosureStatus, String> controlProblemsPath; @FXML private TableColumn<ClosureStatus, String> controlProblemsLocation; @FXML private TableColumn<ClosureStatus, String> controlProblemsType; @FXML private Label controlWarnings; @FXML private Label controlErrors; private ObservableList<ClosureStatus> errors; private ObservableList<Status> messages; public GSSConsoleSectionController(ModelFacade modelFacade, ResourceBundle bundle) { super(modelFacade, bundle); modelFacade.setGssConsole(new GSSConsoleManager(this, modelFacade.getClosure(), bundle, modelFacade.getDocument().getPathResolver())); } /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { controlErrors.setText(MessageFormat.format(bundle.getString(IConstants.ConsoleErrors), Integer.toString(0))); controlWarnings.setText(MessageFormat.format(bundle.getString(IConstants.ConsoleWarnings), Integer.toString(0))); tabProblems.setText(MessageFormat.format(bundle.getString(IConstants.ProgressDialog_Problems), Integer.toString(0))); errors = FXCollections.observableArrayList(); messages = FXCollections.observableArrayList(); controlProblems.setItems(errors); controlConsole.setItems(messages); errors.addListener(new ListChangeListener<ClosureStatus>() { @SuppressWarnings("incomplete-switch") @Override public void onChanged(ListChangeListener.Change<? extends ClosureStatus> c) { int errorsInt = 0; int warningsInt = 0; for (ClosureStatus error : errors) { IStatus.StatusType checkLevel = error.getSeverity(); switch(checkLevel) { case ERROR: errorsInt++; break; case OFF: break; case WARNING: warningsInt++; break; } } controlErrors.setText(MessageFormat.format(bundle.getString(IConstants.ConsoleErrors), Integer.toString(errorsInt))); controlWarnings.setText(MessageFormat.format(bundle.getString(IConstants.ConsoleWarnings), Integer.toString(warningsInt))); tabProblems.setText(MessageFormat.format(bundle.getString(IConstants.ProgressDialog_Problems), Integer.toString(warningsInt + errorsInt))); } }); controlConsole.setCellFactory(new ConsoleCellFactory()); controlProblemsLevel.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, IStatus.StatusType>, ObservableValue<IStatus.StatusType>>() { @Override public ObservableValue<IStatus.StatusType> call(TableColumn.CellDataFeatures<ClosureStatus, IStatus.StatusType> p) { return new SimpleObjectProperty<IStatus.StatusType>((IStatus.StatusType) p.getValue().getSeverity()); } }); controlProblemsLevel.setCellFactory((new Callback<TableColumn<ClosureStatus, IStatus.StatusType>, TableCell<ClosureStatus, IStatus.StatusType>>() { @Override public TableCell<ClosureStatus, IStatus.StatusType> call(TableColumn<ClosureStatus, IStatus.StatusType> param) { TableCell<ClosureStatus, IStatus.StatusType> cell = new TableCell<ClosureStatus, IStatus.StatusType>() { @SuppressWarnings("incomplete-switch") @Override public void updateItem(IStatus.StatusType item, boolean empty) { if (item != null) { switch(item) { case ERROR: setGraphic(new ImageView(ResourceUtils.MARK_ERROR)); break; case OFF: setGraphic(new ImageView(ResourceUtils.MARK_OFF)); break; case WARNING: setGraphic(new ImageView(ResourceUtils.MARK_WARNING)); break; } } } }; return cell; } })); controlProblemsDescription.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<ClosureStatus, String> p) { if (p.getValue() != null) { return new SimpleStringProperty(p.getValue().getMessage()); } else { return new SimpleStringProperty("<no description>"); } } }); controlProblemsDescription.setCellFactory(new Callback<TableColumn<ClosureStatus, String>, TableCell<ClosureStatus, String>>() { @Override public TableCell<ClosureStatus, String> call(TableColumn<ClosureStatus, String> param) { return new GSSConsoleSectionController.TextCell(); } }); controlProblemsResource.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<ClosureStatus, String> p) { if (p.getValue() != null && p.getValue().getResource() != null) { String path = p.getValue().getResource(); String resource = path; if (path.contains("/")) { String[] splits = path.split("/"); resource = splits[splits.length - 1]; } else if (path.contains("\\")) { String[] splits = path.split("\\\\"); resource = splits[splits.length - 1]; } return new SimpleStringProperty(resource); } else { return new SimpleStringProperty("<no resource>"); } } }); controlProblemsResource.setCellFactory(new Callback<TableColumn<ClosureStatus, String>, TableCell<ClosureStatus, String>>() { @Override public TableCell<ClosureStatus, String> call(TableColumn<ClosureStatus, String> param) { return new GSSConsoleSectionController.TextCell(); } }); controlProblemsPath.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<ClosureStatus, String> p) { if (p.getValue() != null) { return new SimpleStringProperty(p.getValue().getResource()); } else { return new SimpleStringProperty("<no path>"); } } }); controlProblemsPath.setCellFactory(new Callback<TableColumn<ClosureStatus, String>, TableCell<ClosureStatus, String>>() { @Override public TableCell<ClosureStatus, String> call(TableColumn<ClosureStatus, String> param) { return new GSSConsoleSectionController.TextCell(); } }); controlProblemsLocation.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<ClosureStatus, String> p) { if (p.getValue() != null) { return new SimpleStringProperty("line " + Integer.toString(p.getValue().getLine())); } else { return new SimpleStringProperty("<no line>"); } } }); controlProblemsLocation.setCellFactory(new Callback<TableColumn<ClosureStatus, String>, TableCell<ClosureStatus, String>>() { @Override public TableCell<ClosureStatus, String> call(TableColumn<ClosureStatus, String> param) { return new GSSConsoleSectionController.TextCell(); } }); controlProblemsType.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ClosureStatus, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<ClosureStatus, String> p) { if (p.getValue() != null) { return new SimpleStringProperty("Closure Stylesheets Problem"); } else { return new SimpleStringProperty("<no type>"); } } }); controlProblemsType.setCellFactory(new Callback<TableColumn<ClosureStatus, String>, TableCell<ClosureStatus, String>>() { @Override public TableCell<ClosureStatus, String> call(TableColumn<ClosureStatus, String> param) { return new GSSConsoleSectionController.TextCell(); } }); } public ContextMenu getConsoleContextMenu(final TableRow<ClosureStatus> tableRow, final TableCell<ClosureStatus, ?> tableCell) { ContextMenu menu = new ContextMenu(); final PreferencesSerializer serializer = new PreferencesSerializer(); Editors editors = serializer.readEditors(); final Editor defaultEditor = serializer.readDefaultEditor(); final EditorLoader loader = new EditorLoader(); tableCell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { if (event.getClickCount() > 1) { ClosureStatus closureStatus = (ClosureStatus) tableRow.getItem(); loader.load(defaultEditor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } } }); MenuItem openItem = new MenuItem("Open"); menu.getItems().add(openItem); openItem.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent arg0) { ClosureStatus closureStatus = (ClosureStatus) tableRow.getItem(); loader.load(defaultEditor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } }); Menu openWith = new Menu("Open with.."); for (final Editor editor : editors.getEditors()) { MenuItem editorItem = new MenuItem(editor.getName()); editorItem.setId(editor.getPath()); openWith.getItems().add(editorItem); editorItem.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent t) { ClosureStatus closureStatus = (ClosureStatus) tableRow.getItem(); loader.load(editor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } }); } menu.getItems().add(openWith); return menu; } private class TextCell extends TableCell<ClosureStatus, String> { private ContextMenu menu; public TextCell() { menu = new ContextMenu(); final PreferencesSerializer serializer = new PreferencesSerializer(); addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { if (event.getClickCount() > 1) { Editor defaultEditor = serializer.readDefaultEditor(); EditorLoader loader = new EditorLoader(); if (defaultEditor != null && EditorLoader.isSupported(defaultEditor) && EditorLoader.isValid(defaultEditor)) { ClosureStatus closureStatus = (ClosureStatus) getTableRow().getItem(); loader.load(defaultEditor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } } } }); final MenuItem openItem = new MenuItem("Open"); menu.getItems().add(openItem); openItem.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent arg0) { Editor defaultEditor = serializer.readDefaultEditor(); EditorLoader loader = new EditorLoader(); if (defaultEditor != null && EditorLoader.isSupported(defaultEditor) && EditorLoader.isValid(defaultEditor)) { ClosureStatus closureStatus = (ClosureStatus) getTableRow().getItem(); loader.load(defaultEditor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } } }); final Menu openWith = new Menu("Open with.."); menu.setOnShowing(new EventHandler<WindowEvent>() { @Override public void handle(WindowEvent event) { openWith.getItems().clear(); Editors editors = serializer.readEditors(); Editor defaultEditor = serializer.readDefaultEditor(); openItem.setVisible(defaultEditor != null && EditorLoader.isSupported(defaultEditor) && EditorLoader.isValid(defaultEditor)); final EditorLoader loader = new EditorLoader(); for (final Editor editor : editors.getEditors()) { if (EditorLoader.isSupported(editor) && EditorLoader.isValid(editor)) { MenuItem editorItem = new MenuItem(editor.getName()); editorItem.setId(editor.getPath()); openWith.getItems().add(editorItem); editorItem.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent t) { ClosureStatus closureStatus = (ClosureStatus) getTableRow().getItem(); loader.load(editor, closureStatus.getResource(), Integer.toString(closureStatus.getLine()), Integer.toString(closureStatus.getColumn())); } }); } } } }); menu.getItems().add(openWith); setContextMenu(menu); } @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (!isEmpty()) { setText(item); setTooltip(new Tooltip(item)); } } } @FXML private void handleStartButton(ActionEvent event) { modelFacade.getGssConsole().start(); } @FXML private void handleStopButton(ActionEvent event) { modelFacade.getGssConsole().stop(); } public ProgressBar getProgressBar() { return progressBar; } @Override public void addErrors(List<ClosureStatus> error) { errors.addAll(new ArrayList<ClosureStatus>(error)); } public void addError(ClosureStatus error) { errors.add(error); } public void addMessage(Status error) { messages.add(error); } public ObservableList<Status> getConsole() { return messages; } public Label getErrorLabel() { return controlErrors; } public Label getWarningLabel() { return controlWarnings; } public ObservableList<ClosureStatus> getProblems() { return errors; } public TableView<ClosureStatus> getControlProblems() { return controlProblems; } public TableColumn<ClosureStatus, IStatus.StatusType> getControlProblemsLevel() { return controlProblemsLevel; } public TableColumn<ClosureStatus, String> getControlProblemsDescription() { return controlProblemsDescription; } public TableColumn<ClosureStatus, String> getControlProblemsResource() { return controlProblemsResource; } public TableColumn<ClosureStatus, String> getControlProblemsPath() { return controlProblemsPath; } public TableColumn<ClosureStatus, String> getControlProblemsLocation() { return controlProblemsLocation; } public TableColumn<ClosureStatus, String> getControlProblemsType() { return controlProblemsType; } public Label getControlWarnings() { return controlWarnings; } public Label getControlErrors() { return controlErrors; } public Tab getTabProblems() { return tabProblems; } public Tab getTabMessages() { return tabMessages; } public ListView<Status> getControlConsole() { return controlConsole; } public HBox create() throws Exception { HBox hBox = new HBox(); hBox.setId("HBox"); hBox.setAlignment(Pos.CENTER); hBox.setMinHeight(Control.USE_PREF_SIZE); hBox.setMinWidth(Control.USE_PREF_SIZE); hBox.setSpacing(5.0); VBox vBox = new VBox(); vBox.setMaxHeight(Control.USE_COMPUTED_SIZE); vBox.setMaxWidth(Control.USE_COMPUTED_SIZE); vBox.setMinHeight(Control.USE_COMPUTED_SIZE); vBox.setPrefWidth(Control.USE_COMPUTED_SIZE); vBox.setSpacing(0.0); HBox.setHgrow(vBox, Priority.ALWAYS); VBox consoleBox = new VBox(); consoleBox.setId("ConsoleBox"); consoleBox.setAlignment(Pos.CENTER_LEFT); consoleBox.setSpacing(5.0); VBox.setVgrow(consoleBox, Priority.NEVER); GridPane gridPane3 = new GridPane(); gridPane3.setHgap(5.0); gridPane3.setPrefWidth(377.0001220703125); VBox.setVgrow(gridPane3, Priority.NEVER); Button button = new Button(); button.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); button.setMnemonicParsing(false); button.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { handleStartButton(event); } }); button.setText(""); GridPane.setColumnIndex(button, 1); GridPane.setRowIndex(button, 0); ImageView imageView3 = new ImageView(); imageView3.setFitHeight(16.0); imageView3.setFitWidth(16.0); imageView3.setMouseTransparent(true); imageView3.setPickOnBounds(true); imageView3.setPreserveRatio(true); Image image3 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/launch.png").openStream()); imageView3.setImage(image3); button.setGraphic(imageView3); Tooltip tooltip = new Tooltip(); tooltip.setText(bundle.getString("ProgressDialog_Run")); button.setTooltip(tooltip); gridPane3.getChildren().add(button); Button button1 = new Button(); button1.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); button1.setMnemonicParsing(false); button1.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { handleStopButton(event); } }); button1.setText(""); GridPane.setColumnIndex(button1, 2); GridPane.setRowIndex(button1, 0); ImageView imageView4 = new ImageView(); imageView4.setFitHeight(16.0); imageView4.setFitWidth(16.0); imageView4.setMouseTransparent(true); imageView4.setPickOnBounds(true); imageView4.setPreserveRatio(true); Image image4 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/mark-error.png").openStream()); imageView4.setImage(image4); button1.setGraphic(imageView4); Tooltip tooltip1 = new Tooltip(); tooltip1.setText(bundle.getString("ProgressDialog_Cancel")); button1.setTooltip(tooltip1); gridPane3.getChildren().add(button1); ColumnConstraints columnConstraints3 = new ColumnConstraints(); columnConstraints3.setHgrow(Priority.ALWAYS); columnConstraints3.setMinWidth(Control.USE_PREF_SIZE); columnConstraints3.setPrefWidth(Control.USE_COMPUTED_SIZE); gridPane3.getColumnConstraints().add(columnConstraints3); ColumnConstraints columnConstraints4 = new ColumnConstraints(); columnConstraints4.setHgrow(Priority.NEVER); columnConstraints4.setMinWidth(Control.USE_PREF_SIZE); columnConstraints4.setPrefWidth(Control.USE_COMPUTED_SIZE); gridPane3.getColumnConstraints().add(columnConstraints4); ColumnConstraints columnConstraints5 = new ColumnConstraints(); columnConstraints5.setHgrow(Priority.NEVER); columnConstraints5.setMinWidth(Control.USE_PREF_SIZE); columnConstraints5.setPrefWidth(Control.USE_COMPUTED_SIZE); gridPane3.getColumnConstraints().add(columnConstraints5); RowConstraints rowConstraints3 = new RowConstraints(); rowConstraints3.setMinHeight(Control.USE_PREF_SIZE); rowConstraints3.setPrefHeight(Control.USE_COMPUTED_SIZE); rowConstraints3.setVgrow(Priority.NEVER); gridPane3.getRowConstraints().add(rowConstraints3); consoleBox.getChildren().add(gridPane3); progressBar = new ProgressBar(); progressBar.setMaxWidth(1.7976931348623157E308); progressBar.setMinHeight(Control.USE_PREF_SIZE); progressBar.setPrefHeight(25.0); progressBar.setPrefWidth(Control.USE_COMPUTED_SIZE); progressBar.setProgress(0.0); VBox.setVgrow(progressBar, Priority.NEVER); consoleBox.getChildren().add(progressBar); Insets insets = new Insets(10.0, 10.0, 10.0, 10.0); consoleBox.setPadding(insets); vBox.getChildren().add(consoleBox); TabPane tabPane1 = new TabPane(); tabPane1.setPrefHeight(Control.USE_COMPUTED_SIZE); tabPane1.setPrefWidth(Control.USE_COMPUTED_SIZE); tabPane1.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE); VBox.setVgrow(tabPane1, Priority.ALWAYS); tabMessages = new Tab(); tabMessages.setClosable(false); tabMessages.setText(bundle.getString("ProgressDialog_Console")); VBox vBox1 = new VBox(); vBox1.setId("VBox"); vBox1.setAlignment(Pos.CENTER); vBox1.setSpacing(5.0); controlConsole = new ListView(); controlConsole.setPrefHeight(100.0); controlConsole.setPrefWidth(Control.USE_COMPUTED_SIZE); VBox.setVgrow(controlConsole, Priority.ALWAYS); vBox1.getChildren().add(controlConsole); tabMessages.setContent(vBox1); ImageView imageView5 = new ImageView(); imageView5.setFitHeight(16.0); imageView5.setFitWidth(16.0); imageView5.setMouseTransparent(true); imageView5.setPickOnBounds(true); imageView5.setPreserveRatio(true); Image image5 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/launch.png").openStream()); imageView5.setImage(image5); tabMessages.setGraphic(imageView5); tabPane1.getTabs().add(tabMessages); tabProblems = new Tab(); tabProblems.setClosable(false); tabProblems.setText(bundle.getString("ProgressDialog_Problems")); VBox vBox2 = new VBox(); vBox2.setPrefHeight(Control.USE_COMPUTED_SIZE); vBox2.setPrefWidth(Control.USE_COMPUTED_SIZE); vBox2.setSpacing(6.0); GridPane gridPane4 = new GridPane(); gridPane4.setHgap(5.0); controlErrors = new Label(); controlErrors.setText(bundle.getString("ProgressDialog_Errors")); GridPane.setColumnIndex(controlErrors, 0); GridPane.setRowIndex(controlErrors, 0); gridPane4.getChildren().add(controlErrors); controlWarnings = new Label(); controlWarnings.setText(bundle.getString("ProgressDialog_Warnings")); GridPane.setColumnIndex(controlWarnings, 1); GridPane.setRowIndex(controlWarnings, 0); gridPane4.getChildren().add(controlWarnings); ColumnConstraints columnConstraints6 = new ColumnConstraints(); columnConstraints6.setHgrow(Priority.NEVER); columnConstraints6.setMinWidth(Control.USE_PREF_SIZE); columnConstraints6.setPrefWidth(Control.USE_COMPUTED_SIZE); gridPane4.getColumnConstraints().add(columnConstraints6); ColumnConstraints columnConstraints7 = new ColumnConstraints(); columnConstraints7.setHgrow(Priority.ALWAYS); columnConstraints7.setMinWidth(Control.USE_PREF_SIZE); columnConstraints7.setPrefWidth(Control.USE_COMPUTED_SIZE); gridPane4.getColumnConstraints().add(columnConstraints7); Insets insets1 = new Insets(5.0, 5.0, 5.0, 5.0); gridPane4.setPadding(insets1); RowConstraints rowConstraints4 = new RowConstraints(); rowConstraints4.setMinHeight(Control.USE_PREF_SIZE); rowConstraints4.setPrefHeight(Control.USE_COMPUTED_SIZE); rowConstraints4.setVgrow(Priority.NEVER); gridPane4.getRowConstraints().add(rowConstraints4); vBox2.getChildren().add(gridPane4); controlProblems = new TableView(); controlProblems.setMinHeight(Control.USE_COMPUTED_SIZE); controlProblems.setMinWidth(Control.USE_PREF_SIZE); controlProblems.setPrefHeight(100.0); controlProblems.setPrefWidth(Control.USE_COMPUTED_SIZE); controlProblems.setTableMenuButtonVisible(false); VBox.setVgrow(controlProblems, Priority.ALWAYS); controlProblemsLevel = new TableColumn(); controlProblemsLevel.setMaxWidth(20.0); controlProblemsLevel.setMinWidth(16.0); controlProblemsLevel.setPrefWidth(20.0); controlProblemsLevel.setText(""); controlProblems.getColumns().add(controlProblemsLevel); controlProblemsDescription = new TableColumn(); controlProblemsDescription.setMinWidth(100.0); controlProblemsDescription.setPrefWidth(300.0); controlProblemsDescription.setText(bundle.getString("ProgressDialog_Table_Description")); controlProblems.getColumns().add(controlProblemsDescription); controlProblemsResource = new TableColumn(); controlProblemsResource.setPrefWidth(100.0); controlProblemsResource.setText(bundle.getString("ProgressDialog_Table_Resource")); controlProblems.getColumns().add(controlProblemsResource); controlProblemsPath = new TableColumn(); controlProblemsPath.setPrefWidth(200.0); controlProblemsPath.setText(bundle.getString("ProgressDialog_Table_Path")); controlProblems.getColumns().add(controlProblemsPath); controlProblemsLocation = new TableColumn(); controlProblemsLocation.setPrefWidth(100.0); controlProblemsLocation.setText(bundle.getString("ProgressDialog_Table_Location")); controlProblems.getColumns().add(controlProblemsLocation); controlProblemsType = new TableColumn(); controlProblemsType.setPrefWidth(100.0); controlProblemsType.setText(bundle.getString("ProgressDialog_Table_Type")); controlProblems.getColumns().add(controlProblemsType); vBox2.getChildren().add(controlProblems); Insets insets2 = new Insets(5.0, 0.0, 0.0, 0.0); vBox2.setPadding(insets2); tabProblems.setContent(vBox2); ImageView imageView6 = new ImageView(); imageView6.setFitHeight(16.0); imageView6.setFitWidth(16.0); imageView6.setMouseTransparent(true); imageView6.setPickOnBounds(true); imageView6.setPreserveRatio(true); Image image6 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/mark-exclamation.png").openStream()); imageView6.setImage(image6); tabProblems.setGraphic(imageView6); tabPane1.getTabs().add(tabProblems); vBox.getChildren().add(tabPane1); Insets insets3 = new Insets(0.0, 0.0, 0.0, 0.0); vBox.setPadding(insets3); hBox.getChildren().add(vBox); Insets insets4 = new Insets(0.0, 0.0, 0.0, 0.0); hBox.setPadding(insets4); initialize(null, bundle); return hBox; } @Override public void report(IStatus status) { // TODO Auto-generated method stub } @Override public void generateReport() { // TODO Auto-generated method stub } }