private void showContextMenu(double x, double y) { if (contextMenu != null && contextMenu.isShowing()) contextMenu.hide(); contextMenu = new ContextMenu(); // contextMenu.getStyleClass().add("background"); Color bg = cfg.colorProperty().getValue(); Color fg = bg.getBrightness() < 0.5f ? Color.WHITE : Color.BLACK; contextMenu.setStyle(background(bg, true)); contextMenu.setOnHidden( value -> { if (cfg.autoHideProperty().get() && !arePopupsOpen()) maybeHideDock(); }); if (!cfg.autoHideProperty().get()) { MenuItem hide = new MenuItem(resources.getString("menu.hide")); hide.setOnAction(value -> getStage().setIconified(true)); hide.setStyle(textFill(fg)); contextMenu.getItems().add(hide); } MenuItem close = new MenuItem(resources.getString("menu.exit")); close.setOnAction( value -> { context.confirmExit(); maybeHideDock(); }); close.setStyle(textFill(fg)); contextMenu.getItems().add(close); Point2D loc = new Point2D(x + getStage().getX(), y + getStage().getY()); contextMenu.show(dockContent, loc.getX(), loc.getY()); }
@Override public void handle(MouseEvent event) { EventType<? extends MouseEvent> eventType = event.getEventType(); if (eventType.equals(MouseEvent.MOUSE_CLICKED)) { if (openMenu != null) disposeOpenMenu(); MenuItem hmi = new MenuItem("Help"); hmi.setOnAction(e -> DialogService.openHelpDialog()); PhongMaterial m = new PhongMaterial(); m.setDiffuseColor(Color.GREEN); m.setSpecularColor(Color.WHITE); Box box = new Box(10, 10, 10); box.setMaterial(m); box.getTransforms().addAll(new Rotate(45, Rotate.Z_AXIS), new Rotate(45, Rotate.X_AXIS)); MenuItem imi = new MenuItem("Inspect", new ImageView(Resources.SEARCH_ICON)); imi.setOnAction( e -> { DialogService.openInspectDialog(node); }); MenuItem emi = new MenuItem("Expand / Collapse", box); emi.setOnAction( e -> { handlePrimaryClick(); }); openMenu = new ContextMenu(); openMenu.getItems().addAll(emi, imi, new SeparatorMenuItem(), hmi); openMenu.show(shape, event.getScreenX(), event.getScreenY()); } else if (eventType.equals(MouseEvent.MOUSE_ENTERED)) { manager.submitTask(() -> manager.findReferingNodes(node, true)); } else if (eventType.equals(MouseEvent.MOUSE_EXITED)) { manager.submitTask(() -> manager.findReferingNodes(node, false)); } }
public Browser(final Stage stage) { // apply the styles getStyleClass().add("browser"); for (int i = 0; i < captions.length; i++) { // create hyperlinks Hyperlink hpl = hpls[i] = new Hyperlink(captions[i]); Image image = images[i] = new Image(getClass().getResourceAsStream(imageFiles[i])); hpl.setGraphic(new ImageView(image)); final String url = urls[i]; final boolean addButton = (hpl.getText().equals("Help")); // process event hpl.setOnAction( (ActionEvent e) -> { needDocumentationButton = addButton; webEngine.load(url); }); } comboBox.setPrefWidth(60); // create the toolbar toolBar = new HBox(); toolBar.setAlignment(Pos.CENTER); toolBar.getStyleClass().add("browser-toolbar"); toolBar.getChildren().add(comboBox); toolBar.getChildren().addAll(hpls); toolBar.getChildren().add(createSpacer()); // set action for the button toggleHelpTopics.setOnAction( (ActionEvent t) -> { webEngine.executeScript("toggle_visibility('help_topics')"); }); smallView.setPrefSize(120, 80); // handle popup windows webEngine.setCreatePopupHandler( (PopupFeatures config) -> { smallView.setFontScale(0.8); if (!toolBar.getChildren().contains(smallView)) { toolBar.getChildren().add(smallView); } return smallView.getEngine(); }); // process history final WebHistory history = webEngine.getHistory(); history .getEntries() .addListener( (Change<? extends Entry> c) -> { c.next(); c.getRemoved() .stream() .forEach( (e) -> { comboBox.getItems().remove(e.getUrl()); }); c.getAddedSubList() .stream() .forEach( (e) -> { comboBox.getItems().add(e.getUrl()); }); }); // set the behavior for the history combobox comboBox.setOnAction( (Event ev) -> { int offset = comboBox.getSelectionModel().getSelectedIndex() - history.getCurrentIndex(); history.go(offset); }); // process page loading webEngine .getLoadWorker() .stateProperty() .addListener( (ObservableValue<? extends State> ov, State oldState, State newState) -> { toolBar.getChildren().remove(toggleHelpTopics); if (newState == State.SUCCEEDED) { JSObject win = (JSObject) webEngine.executeScript("window"); win.setMember("app", new JavaApp()); if (needDocumentationButton) { toolBar.getChildren().add(toggleHelpTopics); } } }); // adding context menu final ContextMenu cm = new ContextMenu(); MenuItem cmItem1 = new MenuItem("Print"); cm.getItems().add(cmItem1); toolBar.addEventHandler( MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> { if (e.getButton() == MouseButton.SECONDARY) { cm.show(toolBar, e.getScreenX(), e.getScreenY()); } }); // processing print job cmItem1.setOnAction( (ActionEvent e) -> { PrinterJob job = PrinterJob.createPrinterJob(); if (job != null) { webEngine.print(job); job.endJob(); } }); // load the home page webEngine.load("http://www.cnn.com"); // add components getChildren().add(toolBar); getChildren().add(browser); }
/** * @param name Chart name * @param parent Skeleton parent * @param axes Configuration of axes * @param abcissaName Abcissa name */ public SwingChart(String name, final Skeleton parent, List<AxisChart> axes, String abcissaName) { this.skeleton = parent; this.axes = axes; this.name = name; this.abcissaFormat = NumberFormat.getInstance(Locale.getDefault()); this.ordinateFormat = NumberFormat.getInstance(Locale.getDefault()); plot = new XYPlot(); plot.setBackgroundPaint(scene2awtColor(javafx.scene.paint.Color.web(strChartBackgroundColor))); plot.setDomainGridlinePaint(scene2awtColor(javafx.scene.paint.Color.web(strGridlineColor))); plot.setRangeGridlinePaint(scene2awtColor(javafx.scene.paint.Color.web(strGridlineColor))); plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); abcissaAxis = new NumberAxis(abcissaName); ((NumberAxis) abcissaAxis).setAutoRangeIncludesZero(false); abcissaAxis.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12)); abcissaAxis.setLabelFont(new Font("SansSerif", Font.PLAIN, 12)); abcissaAxis.setLabelPaint(scene2awtColor(javafx.scene.paint.Color.web(strTickColor))); abcissaAxis.setTickLabelPaint(scene2awtColor(javafx.scene.paint.Color.web(strTickColor))); abcissaAxis.setAutoRange(true); abcissaAxis.setLowerMargin(0.0); abcissaAxis.setUpperMargin(0.0); abcissaAxis.setTickLabelsVisible(true); abcissaAxis.setLabelFont(abcissaAxis.getLabelFont().deriveFont(fontSize)); abcissaAxis.setTickLabelFont(abcissaAxis.getLabelFont().deriveFont(fontSize)); plot.setDomainAxis(abcissaAxis); for (int i = 0; i < axes.size(); i++) { AxisChart categoria = axes.get(i); addAxis(categoria.getName()); for (int j = 0; j < categoria.configSerieList.size(); j++) { SimpleSeriesConfiguration cs = categoria.configSerieList.get(j); addSeries(categoria.getName(), cs); } } chart = new JFreeChart("", new Font("SansSerif", Font.BOLD, 16), plot, false); chart.setBackgroundPaint(scene2awtColor(javafx.scene.paint.Color.web(strBackgroundColor))); chartPanel = new ChartPanel(chart); chartPanel.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(4, 4, 4, 4), BorderFactory.createLineBorder( scene2awtColor(javafx.scene.paint.Color.web(strBackgroundColor))))); chartPanel.getInputMap().put(KeyStroke.getKeyStroke("ESCAPE"), "escape"); chartPanel .getActionMap() .put( "escape", new AbstractAction() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { for (int i = 0; i < plot.getDatasetCount(); i++) { XYDataset test = plot.getDataset(i); XYItemRenderer r = plot.getRenderer(i); r.removeAnnotations(); } } }); chartPanel.addChartMouseListener( cml = new ChartMouseListener() { @Override public void chartMouseClicked(ChartMouseEvent event) {} @Override public void chartMouseMoved(ChartMouseEvent event) { try { XYItemEntity xyitem = (XYItemEntity) event.getEntity(); // get clicked entity XYDataset dataset = (XYDataset) xyitem.getDataset(); // get data set double x = dataset.getXValue(xyitem.getSeriesIndex(), xyitem.getItem()); double y = dataset.getYValue(xyitem.getSeriesIndex(), xyitem.getItem()); final XYPlot plot = chart.getXYPlot(); for (int i = 0; i < plot.getDatasetCount(); i++) { XYDataset test = plot.getDataset(i); XYItemRenderer r = plot.getRenderer(i); r.removeAnnotations(); if (test == dataset) { NumberAxis ejeOrdenada = AxesList.get(i); double y_max = ejeOrdenada.getUpperBound(); double y_min = ejeOrdenada.getLowerBound(); double x_max = abcissaAxis.getUpperBound(); double x_min = abcissaAxis.getLowerBound(); double angulo; if (y > (y_max + y_min) / 2 && x > (x_max + x_min) / 2) { angulo = 3.0 * Math.PI / 4.0; } else if (y > (y_max + y_min) / 2 && x < (x_max + x_min) / 2) { angulo = 1.0 * Math.PI / 4.0; } else if (y < (y_max + y_min) / 2 && x < (x_max + x_min) / 2) { angulo = 7.0 * Math.PI / 4.0; } else { angulo = 5.0 * Math.PI / 4.0; } CircleDrawer cd = new CircleDrawer( (Color) r.getSeriesPaint(xyitem.getSeriesIndex()), new BasicStroke(2.0f), null); // XYAnnotation bestBid = new // XYDrawableAnnotation(dataset.getXValue(xyitem.getSeriesIndex(), // xyitem.getItem()), dataset.getYValue(xyitem.getSeriesIndex(), // xyitem.getItem()), 11, 11, cd); String txt = "X:" + abcissaFormat.format(x) + ", Y:" + ordinateFormat.format(y); XYPointerAnnotation anotacion = new XYPointerAnnotation( txt, dataset.getXValue(xyitem.getSeriesIndex(), xyitem.getItem()), dataset.getYValue(xyitem.getSeriesIndex(), xyitem.getItem()), angulo); anotacion.setTipRadius(10.0); anotacion.setBaseRadius(35.0); anotacion.setFont(new Font("SansSerif", Font.PLAIN, 10)); if (Long.parseLong((strChartBackgroundColor.replace("#", "")), 16) > 0xffffff / 2) { anotacion.setPaint(Color.black); anotacion.setArrowPaint(Color.black); } else { anotacion.setPaint(Color.white); anotacion.setArrowPaint(Color.white); } // bestBid.setPaint((Color) r.getSeriesPaint(xyitem.getSeriesIndex())); r.addAnnotation(anotacion); } } // LabelValorVariable.setSize(LabelValorVariable.getPreferredSize()); } catch (NullPointerException | ClassCastException ex) { } } }); chartPanel.setPopupMenu(null); chartPanel.setBackground(scene2awtColor(javafx.scene.paint.Color.web(strBackgroundColor))); SwingNode sn = new SwingNode(); sn.setContent(chartPanel); chartFrame = new VBox(); chartFrame.getChildren().addAll(sn, legendFrame); VBox.setVgrow(sn, Priority.ALWAYS); VBox.setVgrow(legendFrame, Priority.NEVER); chartFrame .getStylesheets() .addAll(SwingChart.class.getResource("overlay-chart.css").toExternalForm()); legendFrame.setStyle("marco: " + strBackgroundColor + ";-fx-background-color: marco;"); MenuItem mi; mi = new MenuItem("Print"); mi.setOnAction( (ActionEvent t) -> { print(chartFrame); }); contextMenuList.add(mi); sn.setOnMouseClicked( (MouseEvent t) -> { if (menu != null) { menu.hide(); } if (t.getClickCount() == 2) { backgroundEdition(); } }); mi = new MenuItem("Copy to clipboard"); mi.setOnAction( (ActionEvent t) -> { copyClipboard(chartFrame); }); contextMenuList.add(mi); mi = new MenuItem("Export values"); mi.setOnAction( (ActionEvent t) -> { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Export to file"); fileChooser .getExtensionFilters() .addAll(new FileChooser.ExtensionFilter("Comma Separated Values", "*.csv")); Window w = null; try { w = parent.getScene().getWindow(); } catch (NullPointerException e) { } File file = fileChooser.showSaveDialog(w); if (file != null) { export(file); } }); contextMenuList.add(mi); chartFrame.setOnContextMenuRequested( (ContextMenuEvent t) -> { if (menu != null) { menu.hide(); } menu = new ContextMenu(); menu.getItems().addAll(contextMenuList); menu.show(chartFrame, t.getScreenX(), t.getScreenY()); }); }
/** Show pop-up menu. */ public void showPopup() { if (!popupMenu.isShowing()) { popupMenu.show(this, Side.BOTTOM, 0, 0); } }