Skip to content

Commit

Permalink
Adding tab context menu in save&restore
Browse files Browse the repository at this point in the history
  • Loading branch information
georgweiss committed Aug 20, 2023
1 parent cd39969 commit 5a598e9
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Copyright (C) 2020 European Spallation Source ERIC.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/

package org.phoebus.applications.saveandrestore.ui;

import javafx.application.Platform;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab;
import javafx.scene.image.ImageView;
import org.phoebus.applications.saveandrestore.ui.snapshot.SnapshotTab;
import org.phoebus.ui.javafx.ImageCache;

import java.util.List;

/**
* Base class for save-n-restore {@link Tab}s containing common functionality.
*/
public abstract class SaveAndRestoreTab extends Tab implements NodeChangedListener{

public SaveAndRestoreTab(){
ContextMenu contextMenu = new ContextMenu();

MenuItem closeAll = new MenuItem(org.phoebus.ui.application.Messages.DockCloseAll,
new ImageView(ImageCache.getImage(SnapshotTab.class, "/icons/remove_multiple.png")));
closeAll.setOnAction(e -> {
getTabPane().getTabs().removeAll(getTabPane().getTabs());
});

MenuItem closeOthers = new MenuItem(org.phoebus.ui.application.Messages.DockCloseOthers,
new ImageView(ImageCache.getImage(SnapshotTab.class, "/icons/remove_multiple.png")));
closeOthers.setOnAction(e -> {
List<Tab> tabs = getTabPane().getTabs();
Platform.runLater(() -> tabs.forEach(t -> {
if (!t.equals(this)) {
tabs.remove(t);
}
}));
});

contextMenu.getItems().addAll(closeAll, closeOthers);
setContextMenu(contextMenu);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,19 @@

import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Tab;
import javafx.scene.image.ImageView;
import org.phoebus.applications.saveandrestore.Messages;
import org.phoebus.applications.saveandrestore.model.Node;
import org.phoebus.applications.saveandrestore.ui.ImageRepository;
import org.phoebus.applications.saveandrestore.ui.NodeChangedListener;
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreService;
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreTab;
import org.phoebus.framework.nls.NLS;

import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConfigurationTab extends Tab implements NodeChangedListener {
public class ConfigurationTab extends SaveAndRestoreTab {

private ConfigurationController configurationController;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import org.phoebus.applications.saveandrestore.model.NodeType;
import org.phoebus.applications.saveandrestore.model.Tag;
import org.phoebus.applications.saveandrestore.ui.ImageRepository;
import org.phoebus.applications.saveandrestore.ui.NodeChangedListener;
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreService;
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreTab;
import org.phoebus.framework.nls.NLS;
import org.phoebus.ui.dialog.ExceptionDetailsErrorDialog;

Expand All @@ -43,7 +43,7 @@
* These two use cases/views are split in terms of fxml files and controller classes in order to facilitate development
* and maintenance.
*/
public class SnapshotTab extends Tab implements NodeChangedListener {
public class SnapshotTab extends SaveAndRestoreTab {

public SaveAndRestoreService saveAndRestoreService;

Expand Down

0 comments on commit 5a598e9

Please sign in to comment.