private void insertClip(Clip clip) { CodeEditor editor = currentEditor.getValue(); EditorRange selectedRange = editor.getSelection(); String insertedClip = selectedRange.getSelection().replaceAll("^(.*)$", clip.getContent()); editor.replaceSelection(insertedClip); book.setBookIsChanged(true); }
public void refreshAll() { List<Tab> tabs = tabPane.getTabs(); for (Tab tab : tabs) { Resource resource = (Resource) tab.getUserData(); if (tab.getContent() instanceof CodeEditor) { CodeEditor editor = (CodeEditor) tab.getContent(); try { editor.setCode(new String(resource.getData(), "UTF-8")); } catch (IOException e) { logger.error("", e); } } } }
private void beautifyOrRepairHTML(String mode) { logger.info("beautifying html"); try { CodeEditor editor = currentEditor.getValue(); EditorPosition currentCursorPosition = editor.getEditorCursorPosition(); String code = editor.getCode(); if (currentEditorIsXHTML.get()) { try { Resource resource = currentXHTMLResource.get(); resource.setData(code.getBytes("UTF-8")); switch (mode) { case "format": code = formatAsXHTML(code); break; case "repair": code = repairXHTML(code); break; } resource.setData(code.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // never happens } } editor.setCode(code); editor.setEditorCursorPosition(currentCursorPosition); editor.scrollTo(currentCursorPosition); book.setBookIsChanged(true); } catch (IOException | JDOMException e) { logger.error("", e); Dialogs.create() .owner(tabPane) .title("Formatierung nicht möglich") .message( "Kann Datei nicht formatieren. Bitte die Fehlermeldung an den Hersteller weitergeben.") .showException(e); } }
public void openFileInEditor(Resource resource, MediaType mediaType) throws IllegalArgumentException { if (!isTabAlreadyOpen(resource)) { Tab tab = new Tab(); tab.setClosable(true); if (resource == null) { Dialogs.create() .owner(tabPane) .title("Datei nicht vorhanden") .message( "Die angeforderte Datei ist nicht vorhanden und kann deshalb nicht geöffnet werden.") .showError(); return; } tab.setText(resource.getFileName()); resource .hrefProperty() .addListener( (observable, oldValue, newValue) -> { tab.setText(resource.getFileName()); }); String content = ""; try { content = new String(resource.getData(), resource.getInputEncoding()); } catch (IOException e) { logger.error("", e); } CodeEditor editor; if (mediaType.equals(MediaType.CSS)) { editor = new CssCodeEditor(); editor.setContextMenu(contextMenuCSS); } else if (mediaType.equals(MediaType.XHTML)) { editor = new XHTMLCodeEditor(); editor.setContextMenu(contextMenuXHTML); } else if (mediaType.equals(MediaType.XML)) { editor = new XMLCodeEditor(); editor.setContextMenu(contextMenuXML); } else { throw new IllegalArgumentException("no editor for mediatype " + mediaType.getName()); } tab.setContent((Node) editor); tab.setUserData(resource); tabPane.getTabs().add(tab); tabPane.getSelectionModel().select(tab); final String code = content; editor .stateProperty() .addListener( new ChangeListener<Worker.State>() { @Override public void changed( ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) { if (newValue.equals(Worker.State.SUCCEEDED)) { openingEditorTab = true; editor.setCode(code); editor.setCodeEditorSize( ((AnchorPane) editor).getWidth() - 20, ((AnchorPane) editor).getHeight() - 20); ((AnchorPane) editor) .widthProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { editor.setCodeEditorSize( newValue.doubleValue() - 20, ((AnchorPane) editor).getHeight() - 20); } }); ((AnchorPane) editor) .heightProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { editor.setCodeEditorSize( ((AnchorPane) editor).getWidth() - 20, newValue.doubleValue() - 20); } }); editor.setCodeEditorSize( ((AnchorPane) editor).getWidth() - 20, ((AnchorPane) editor).getHeight() - 20); ((AnchorPane) editor) .widthProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { editor.setCodeEditorSize( newValue.doubleValue() - 20, ((AnchorPane) editor).getHeight() - 20); } }); ((AnchorPane) editor) .heightProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { editor.setCodeEditorSize( ((AnchorPane) editor).getWidth() - 20, newValue.doubleValue() - 20); } }); openingEditorTab = false; } } }); editor .cursorPositionProperty() .addListener( (observable, oldValue, newValue) -> { cursorPosLabelProperty.set(newValue.getLine() + ":" + newValue.getColumn()); }); editor .codeProperty() .addListener( (observable1, oldValue, newValue) -> { if (openingEditorTab) { return; } if (currentEditor.getValue().getMediaType().equals(MediaType.XHTML)) { try { currentXHTMLResource.get().setData(newValue.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // never happens } } else if (currentEditor.getValue().getMediaType().equals(MediaType.CSS)) { try { currentCssResource.get().setData(newValue.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // never happens } } else if (currentEditor.getValue().getMediaType().equals(MediaType.XML)) { try { currentXMLResource.get().setData(newValue.getBytes("UTF-8")); if (((XMLResource) resource).isValidXML() && MediaType.OPF.equals(resource.getMediaType())) { PackageDocumentReader.read(resource, book); } } catch (JDOMException | IOException e) { logger.error("", e); } } if (scheduledService.getState().equals(Worker.State.READY)) { scheduledService.start(); } else { scheduledService.restart(); } book.setBookIsChanged(true); }); } }