package bluej.pkgmgr.target;

import java.io.File;
import java.util.Properties;

import javafx.geometry.Pos;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;

import bluej.Config;
import bluej.editor.Editor;
import bluej.editor.EditorManager;
import bluej.pkgmgr.Package;
import bluej.pkgmgr.PackageEditor;
import bluej.utility.javafx.JavaFXUtil;
import threadchecker.OnThread;
import threadchecker.Tag;


| A CSS file in the package directory. | public class CSSTarget extends NonCodeEditableTarget{ private static final String openStr = Config.getString("pkgmgr.cssmenu.open"); private static final String removeStr = Config.getString("pkgmgr.cssmenu.remove"); private final File file; public CSSTarget(Package aPackage, File file) { super(aPackage, file.getName()); this.file = file; JavaFXUtil.addStyleClass(pane, "css-target"); JavaFXUtil.addStyleClass(pane, "css-target-id-" + file.getName().replace(".", "-")); Label name = new Label(file.getName()); BorderPane.setAlignment(name, Pos.CENTER); pane.setTop(name); } @Override public @OnThread(Tag.FXPlatform) void doubleClick(boolean openInNewWindow) { Editor editor = getEditor(); if (editor == null) { getPackage().showError("error-open-source"); } else { editor.setEditorVisible(true, openInNewWindow); } }
| Disply the context menu. | @Override @OnThread(Tag.FXPlatform) public void popupMenu(int x, int y, PackageEditor graphEditor) { ContextMenu menu = createMenu(); if (menu != null) { showingMenu(menu); menu.show(pane, x, y); } }
| Construct a popup menu which displays all our parent packages. | @OnThread(Tag.FXPlatform) private ContextMenu createMenu() { MenuItem open = new MenuItem(openStr); open.setOnAction(e -> { open(); }); JavaFXUtil.addStyleClass(open, "class-action-inbuilt"); ContextMenu contextMenu = new ContextMenu(open); MenuItem remove = new MenuItem(removeStr); remove.setOnAction(e -> { remove(); }); JavaFXUtil.addStyleClass(remove, "class-action-inbuilt"); contextMenu.getItems().add(remove); return contextMenu; } @Override public void remove() { getPackage().removeTarget(this); file.delete(); } @Override protected File getSourceFile() { return file; } @Override public Editor getEditor() { if (editor == null) { editor = EditorManager.getEditorManager().openText( getSourceFile().getPath(), getPackage().getProject().getProjectCharset(), getSourceFile().getName(), getPackage().getProject()::getDefaultFXTabbedEditor); } return editor; } @Override public @OnThread(Tag.FXPlatform) boolean isMoveable() { return true; } @Override public @OnThread(Tag.FX) boolean isResizable() { return true; } @Override @OnThread(Tag.FXPlatform) public void save(Properties props, String prefix) { super.save(props, prefix); props.put(prefix + ".type", "CSSTarget"); } }
top, use, map, class CSSTarget

.   CSSTarget
.   doubleClick
.   popupMenu
.   createMenu
.   remove
.   getSourceFile
.   getEditor
.   save




159 neLoCode + 3 LoComm