Search in sources :

Example 1 with DockItemWithInput

use of org.phoebus.ui.docking.DockItemWithInput in project phoebus by ControlSystemStudio.

the class PVTableApplication method create.

@Override
public PVTableInstance create(final URI resource) {
    PVTableInstance instance = null;
    // Handles pv or file/http resource
    try {
        final List<String> pvs = ResourceParser.parsePVs(resource);
        if (pvs.size() > 0) {
            instance = create();
            for (String pv : pvs) instance.getModel().addItem(pv);
        } else {
            // Check for existing instance with that input
            final DockItemWithInput existing = DockStage.getDockItemWithInput(NAME, resource);
            if (existing != null) {
                // Found one, raise it
                instance = existing.getApplication();
                instance.raise();
            } else {
                // Nothing found, create new one
                instance = create();
                instance.loadResource(resource);
            }
        }
    } catch (Exception ex) {
        logger.log(Level.WARNING, "PV Table cannot open '" + resource + "'", ex);
    }
    return instance;
}
Also used : DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput)

Example 2 with DockItemWithInput

use of org.phoebus.ui.docking.DockItemWithInput in project phoebus by ControlSystemStudio.

the class PhoebusApplication method createMenu.

private MenuBar createMenu(final Stage stage) {
    final MenuBar menuBar = new MenuBar();
    // For Mac OS X, use it's menu bar on top of screen
    if (PlatformInfo.is_mac_os_x)
        menuBar.setUseSystemMenuBar(true);
    // File
    final MenuItem open = new MenuItem(Messages.Open, ImageCache.getImageView(getClass(), "/icons/fldr_obj.png"));
    open.setOnAction(event -> fileOpen(stage, false));
    final MenuItem open_with = new MenuItem(Messages.OpenWith, ImageCache.getImageView(getClass(), "/icons/fldr_obj.png"));
    open_with.setOnAction(event -> fileOpen(stage, true));
    top_resources_menu = new Menu(Messages.TopResources, ImageCache.getImageView(getClass(), "/icons/fldr_obj.png"));
    top_resources_menu.setDisable(true);
    final MenuItem file_save = new MenuItem(Messages.Save, ImageCache.getImageView(getClass(), "/icons/save_edit.png"));
    file_save.setOnAction(event -> JobManager.schedule(Messages.Save, monitor -> active_item_with_input.get().save(monitor)));
    final MenuItem file_save_as = new MenuItem(Messages.SaveAs, ImageCache.getImageView(getClass(), "/icons/saveas_edit.png"));
    file_save_as.setOnAction(event -> JobManager.schedule(Messages.SaveAs, monitor -> active_item_with_input.get().save_as(monitor)));
    final MenuItem exit = new MenuItem(Messages.Exit);
    exit.setOnAction(event -> closeMainStage());
    final Menu file = new Menu(Messages.File, null, open, open_with, top_resources_menu, new SeparatorMenuItem(), file_save, file_save_as, new SeparatorMenuItem(), exit);
    file.setOnShowing(event -> {
        final DockItemWithInput input_item = active_item_with_input.get();
        if (input_item == null) {
            file_save.setDisable(true);
            file_save_as.setDisable(true);
        } else {
            file_save.setDisable(!input_item.isDirty());
            file_save_as.setDisable(!input_item.isSaveAsSupported());
        }
    });
    menuBar.getMenus().add(file);
    // Application Contributions
    final Menu applicationsMenu = new Menu(Messages.Applications);
    final MenuTreeNode node = MenuEntryService.getInstance().getMenuEntriesTree();
    addMenuNode(applicationsMenu, node);
    menuBar.getMenus().add(applicationsMenu);
    // Window
    show_tabs = new CheckMenuItem(Messages.AlwaysShowTabs);
    show_tabs.setSelected(DockPane.isAlwaysShowingTabs());
    show_tabs.setOnAction(event -> DockPane.alwaysShowTabs(show_tabs.isSelected()));
    show_toolbar = new CheckMenuItem(Messages.ShowToolbar);
    show_toolbar.setOnAction(event -> showToolbar(show_toolbar.isSelected()));
    show_statusbar = new CheckMenuItem(Messages.ShowStatusbar);
    show_statusbar.setOnAction(event -> showStatusbar(show_statusbar.isSelected()));
    save_layout = new SaveLayoutMenuItem(this, memento_files);
    delete_layouts = new DeleteLayoutsMenuItem(this, memento_files);
    final Menu menu = new Menu(Messages.Window, null, show_tabs, show_toolbar, show_statusbar, new SeparatorMenuItem(), selectTabMenu, closeAllTabsMenuItem, new SeparatorMenuItem(), save_layout, load_layout, delete_layouts, new SeparatorMenuItem(), /* Full Screen placeholder */
    new FullScreenAction(stage));
    // Update Full screen action when shown to get correct enter/exit FS mode
    menu.setOnShowing(event -> {
        // Last menu item
        final int full_screen_index = menu.getItems().size() - 1;
        final FullScreenAction full_screen = new FullScreenAction(stage);
        if (!AuthorizationService.hasAuthorization("full_screen"))
            full_screen.setDisable(true);
        menu.getItems().set(full_screen_index, full_screen);
    });
    menuBar.getMenus().add(menu);
    // Help
    final MenuItem content = createMenuItem(new OpenHelp());
    final MenuItem about = createMenuItem(new OpenAbout());
    menuBar.getMenus().add(new Menu(Messages.Help, null, about, content));
    selectTabMenu.getParentMenu().setOnShowing(e -> {
        List<MenuItem> menuItems = new ArrayList<>();
        for (Stage s : DockStage.getDockStages()) {
            for (DockPane dockPane : DockStage.getDockPanes(s)) {
                for (DockItem dockItem : dockPane.getDockItems()) {
                    CheckMenuItem menuItem = new CheckMenuItem(dockItem.getLabel());
                    menuItem.setSelected(dockItem.isSelected());
                    menuItem.setOnAction(ae -> dockItem.select());
                    menuItems.add(menuItem);
                }
            }
        }
        menuItems.sort(Comparator.comparing(MenuItem::getText));
        selectTabMenu.getItems().clear();
        selectTabMenu.getItems().addAll(menuItems);
    });
    closeAllTabsMenuItem.setOnAction(ae -> closeAllTabs());
    return menuBar;
}
Also used : Button(javafx.scene.control.Button) JobManager(org.phoebus.framework.jobs.JobManager) Arrays(java.util.Arrays) CheckMenuItem(javafx.scene.control.CheckMenuItem) DockPaneListener(org.phoebus.ui.docking.DockPaneListener) VBox(javafx.scene.layout.VBox) KeyCombination(javafx.scene.input.KeyCombination) Preferences(org.phoebus.ui.Preferences) Application(javafx.application.Application) FullScreenAction(org.phoebus.ui.javafx.FullScreenAction) MenuTreeNode(org.phoebus.ui.application.MenuEntryService.MenuTreeNode) AlertType(javafx.scene.control.Alert.AlertType) Map(java.util.Map) DockPane(org.phoebus.ui.docking.DockPane) URI(java.net.URI) Alert(javafx.scene.control.Alert) MenuEntry(org.phoebus.ui.spi.MenuEntry) ImageCache(org.phoebus.ui.javafx.ImageCache) ResponsivenessMonitor(org.phoebus.ui.monitoring.ResponsivenessMonitor) MenuItem(javafx.scene.control.MenuItem) OpenHelp(org.phoebus.ui.help.OpenHelp) Collection(java.util.Collection) AppDescriptor(org.phoebus.framework.spi.AppDescriptor) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) List(java.util.List) SubJobMonitor(org.phoebus.framework.jobs.SubJobMonitor) MenuButton(javafx.scene.control.MenuButton) AppResourceDescriptor(org.phoebus.framework.spi.AppResourceDescriptor) Optional(java.util.Optional) BorderPane(javafx.scene.layout.BorderPane) Welcome(org.phoebus.ui.welcome.Welcome) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) DialogHelper(org.phoebus.ui.dialog.DialogHelper) ButtonType(javafx.scene.control.ButtonType) MouseEvent(javafx.scene.input.MouseEvent) JobMonitor(org.phoebus.framework.jobs.JobMonitor) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) AuthorizationService(org.phoebus.security.authorization.AuthorizationService) ApplicationService(org.phoebus.framework.workbench.ApplicationService) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) StatusBar(org.phoebus.ui.statusbar.StatusBar) ResourceParser(org.phoebus.framework.util.ResourceParser) OpenFileDialog(org.phoebus.ui.dialog.OpenFileDialog) WeakReference(java.lang.ref.WeakReference) Tooltip(javafx.scene.control.Tooltip) DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput) MementoHelper(org.phoebus.ui.internal.MementoHelper) KeyCode(javafx.scene.input.KeyCode) ListPickerDialog(org.phoebus.ui.dialog.ListPickerDialog) Dialog(javafx.scene.control.Dialog) MenuBar(javafx.scene.control.MenuBar) PlatformInfo(org.phoebus.ui.javafx.PlatformInfo) Iterator(java.util.Iterator) ToolBar(javafx.scene.control.ToolBar) DockStage(org.phoebus.ui.docking.DockStage) Node(javafx.scene.Node) MementoTree(org.phoebus.framework.persistence.MementoTree) DockItem(org.phoebus.ui.docking.DockItem) OpenAbout(org.phoebus.ui.help.OpenAbout) FileInputStream(java.io.FileInputStream) File(java.io.File) Menu(javafx.scene.control.Menu) KeyCodeCombination(javafx.scene.input.KeyCodeCombination) TimeUnit(java.util.concurrent.TimeUnit) ActionEvent(javafx.event.ActionEvent) Stage(javafx.stage.Stage) XMLMementoTree(org.phoebus.framework.persistence.XMLMementoTree) ImageView(javafx.scene.image.ImageView) Window(javafx.stage.Window) Locations(org.phoebus.framework.workbench.Locations) Comparator(java.util.Comparator) Image(javafx.scene.image.Image) DockPane(org.phoebus.ui.docking.DockPane) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) MenuBar(javafx.scene.control.MenuBar) FullScreenAction(org.phoebus.ui.javafx.FullScreenAction) CheckMenuItem(javafx.scene.control.CheckMenuItem) MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) MenuTreeNode(org.phoebus.ui.application.MenuEntryService.MenuTreeNode) OpenHelp(org.phoebus.ui.help.OpenHelp) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) OpenAbout(org.phoebus.ui.help.OpenAbout) CheckMenuItem(javafx.scene.control.CheckMenuItem) DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput) DockStage(org.phoebus.ui.docking.DockStage) Stage(javafx.stage.Stage) Menu(javafx.scene.control.Menu) DockItem(org.phoebus.ui.docking.DockItem)

Example 3 with DockItemWithInput

use of org.phoebus.ui.docking.DockItemWithInput in project phoebus by ControlSystemStudio.

the class MementoHelper method saveDockItem.

/**
 * Save state of a DockItem
 *
 *  <p>Store the application name, optionally the resource (input),
 *  and then allow the application itself to store details.
 *
 *  @param memento
 *  @param item
 */
private static void saveDockItem(final MementoTree memento, final DockItem item) {
    final AppInstance application = item.getApplication();
    if (application == null || application.isTransient())
        return;
    final MementoTree item_memento = memento.getChild(item.getID());
    item_memento.setString(DockItem.KEY_APPLICATION, application.getAppDescriptor().getName());
    if (item instanceof DockItemWithInput) {
        final URI input = ((DockItemWithInput) item).getInput();
        if (input != null)
            item_memento.setString(INPUT_URI, input.toString());
    }
    try {
        application.save(item_memento);
    } catch (Throwable ex) {
        logger.log(Level.SEVERE, "Application " + application.getAppDescriptor().getDisplayName() + " memento error", ex);
    }
}
Also used : AppInstance(org.phoebus.framework.spi.AppInstance) MementoTree(org.phoebus.framework.persistence.MementoTree) XMLMementoTree(org.phoebus.framework.persistence.XMLMementoTree) DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput) URI(java.net.URI)

Example 4 with DockItemWithInput

use of org.phoebus.ui.docking.DockItemWithInput in project phoebus by ControlSystemStudio.

the class Viewer3dApp method create.

@Override
public AppInstance create(final URI resource) {
    // Check for existing instance with that input, i.e. path & macros
    final Viewer3dInstance instance;
    final DockItemWithInput existing = DockStage.getDockItemWithInput(NAME, resource);
    if (existing != null) {
        // Found one, raise it
        instance = existing.getApplication();
        instance.raise();
        // Reload the resource.
        instance.reload();
    } else {
        // Nothing found, create new one
        instance = new Viewer3dInstance(this, resource);
    }
    return instance;
}
Also used : DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput)

Example 5 with DockItemWithInput

use of org.phoebus.ui.docking.DockItemWithInput in project phoebus by ControlSystemStudio.

the class DisplayEditorApplication method create.

@Override
public DisplayEditorInstance create(final URI resource) {
    // Turn URI into the actual file,
    // (which may be a download of a remote URL),
    // so that existing instance can be uniquely identified
    final URI file_resource = getFileResource(resource);
    if (file_resource == null)
        return null;
    // Check for existing instance with that input
    final DisplayEditorInstance instance;
    final DockItemWithInput existing = DockStage.getDockItemWithInput(NAME, file_resource);
    if (existing != null) {
        // Found one, raise it
        instance = existing.getApplication();
        instance.raise();
    } else {
        // Nothing found, create new one
        instance = create();
        if (instance == null)
            return null;
        instance.loadDisplay(file_resource);
    }
    return instance;
}
Also used : DockItemWithInput(org.phoebus.ui.docking.DockItemWithInput) URI(java.net.URI)

Aggregations

DockItemWithInput (org.phoebus.ui.docking.DockItemWithInput)10 URI (java.net.URI)4 Stage (javafx.stage.Stage)2 Window (javafx.stage.Window)2 MementoTree (org.phoebus.framework.persistence.MementoTree)2 XMLMementoTree (org.phoebus.framework.persistence.XMLMementoTree)2 DockPane (org.phoebus.ui.docking.DockPane)2 DockStage (org.phoebus.ui.docking.DockStage)2 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 WeakReference (java.lang.ref.WeakReference)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Comparator (java.util.Comparator)1 HashMap (java.util.HashMap)1 Iterator (java.util.Iterator)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1