/* * Copyright 2003-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.ide.bookmark; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.ui.ScrollPaneFactory; import jetbrains.mps.ide.project.ProjectHelper; import jetbrains.mps.smodel.ModelAccess; import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.ActionEvent; public class BookmarksDialog extends DialogWrapper { private BookmarkManager myBookmarkManager; private JPanel myMainComponent = new JPanel(); private BookmarksTree myTree; public BookmarksDialog(Project project, BookmarkManager bookmarkManager) { super(true); setTitle("Editor Bookmarks"); myBookmarkManager = bookmarkManager; myTree = new BookmarksTree(ProjectHelper.toMPSProject(project), bookmarkManager); myMainComponent.setLayout(new BorderLayout()); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree); myMainComponent.add(scrollPane); myTree.rebuildNow(); init(); } @Override protected Action[] createActions() { return new Action[]{ new DialogWrapperAction("Go to") { @Override protected void doAction(ActionEvent e) { if(!isSelectionEmpty()) { myTree.gotoSelectedBookmark(); doOKAction(); } } }, new DialogWrapperAction("View Source") { @Override protected void doAction(ActionEvent e) { if(!isSelectionEmpty()) { myTree.gotoSelectedBookmark(); } } }, new DialogWrapperAction("Remove") { @Override protected void doAction(ActionEvent e) { if(!isSelectionEmpty()) { ModelAccess.instance().runReadInEDT(new Runnable() { @Override public void run() { myTree.removeSelectedBookmark(); } }); } } }, new DialogWrapperAction("Remove All") { @Override protected void doAction(ActionEvent e) { ModelAccess.instance().runReadInEDT(new Runnable() { @Override public void run() { myBookmarkManager.clearBookmarks(); } }); } }, new DialogWrapperAction("Close") { @Override protected void doAction(ActionEvent e) { BookmarksDialog.super.doCancelAction(); } } }; } private boolean isSelectionEmpty() { if(myTree.isSelectionEmpty()) setErrorText("No bookmark selected!"); return myTree.isSelectionEmpty(); } @Override protected String getDimensionServiceKey() { return BookmarksDialog.class.getName(); } @Override protected JComponent createCenterPanel() { return myMainComponent; } }