Skip to content
Snippets Groups Projects
Commit a2deb7cc authored by buczekp's avatar buczekp
Browse files

[LMS-1075] added context menu to project selection tree linking to project viewer

SVN: 13971
parent e02c8a2a
No related branches found
No related tags found
No related merge requests found
...@@ -22,20 +22,33 @@ import java.util.TreeSet; ...@@ -22,20 +22,33 @@ import java.util.TreeSet;
import com.extjs.gxt.ui.client.Style.SelectionMode; import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.TreeStore; import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ProjectViewer;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.NonHierarchicalBaseModelData; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.NonHierarchicalBaseModelData;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Group; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Group;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
...@@ -68,6 +81,10 @@ public final class ProjectSelectionTreeWidget extends TreePanel<ModelData> imple ...@@ -68,6 +81,10 @@ public final class ProjectSelectionTreeWidget extends TreePanel<ModelData> imple
switchOffFolderIcons(); switchOffFolderIcons();
getSelectionModel().setSelectionMode(SelectionMode.SINGLE); getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
refreshTree(); refreshTree();
final Menu contextMenu = createContextMenu();
setContextMenu(contextMenu);
getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<ModelData>() getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<ModelData>()
{ {
@Override @Override
...@@ -76,13 +93,63 @@ public final class ProjectSelectionTreeWidget extends TreePanel<ModelData> imple ...@@ -76,13 +93,63 @@ public final class ProjectSelectionTreeWidget extends TreePanel<ModelData> imple
ModelData selected = se.getSelectedItem(); ModelData selected = se.getSelectedItem();
if (selected != null && isLeaf(selected)) if (selected != null && isLeaf(selected))
{ {
contextMenu.enable(); // context menu is enabled for projects
selectedProjectOrNull = selectedProjectOrNull =
(Project) selected.get(ModelDataPropertyNames.OBJECT); (Project) selected.get(ModelDataPropertyNames.OBJECT);
getSelectionChangedListener().handleEvent(null); getSelectionChangedListener().handleEvent(null);
} else
{
contextMenu.disable(); // context menu is disabled for groups
} }
}
});
}
private Menu createContextMenu()
{
final Menu contextMenu = new Menu();
final MenuItem details = new MenuItem("details");
details.addSelectionListener(new SelectionListener<MenuEvent>()
{
@Override
public void componentSelected(MenuEvent ce)
{
// show project detail view if project context menu was selected
if (selectedProjectOrNull != null)
{
showProjectDetailsView(selectedProjectOrNull);
}
} }
}); });
contextMenu.add(details);
return contextMenu;
}
private void showProjectDetailsView(final Project project)
{
ITabItemFactory tabFactory;
final TechId projectId = TechId.create(project);
tabFactory = new ITabItemFactory()
{
public ITabItem create()
{
final DatabaseModificationAwareComponent viewer =
ProjectViewer.create(viewContext.getCommonViewContext(), projectId);
return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false);
}
public String getId()
{
return ProjectViewer.createId(projectId);
}
private String getViewerTitle()
{
return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project);
}
};
DispatcherHelper.dispatchNaviEvent(tabFactory);
} }
private void switchOffFolderIcons() private void switchOffFolderIcons()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment