/* * The GPLv3 licence : * ----------------- * Copyright (c) 2009 Ricardo Dias * * This file is part of MuVis. * * MuVis 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 3 of the License, or * (at your option) any later version. * * MuVis 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 MuVis. If not, see <http://www.gnu.org/licenses/>. */ package muvis.view; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import muvis.Messages; import muvis.util.EmptyActionListener; /** * * @author Ricardo */ public abstract class MainViewsMouseAdapter extends MouseAdapter { protected JPopupMenu contextMenu; protected JMenuItem previewElementMenu; protected JMenuItem findSimilarElementMenu; protected JMenuItem findNonSimilarElementMenu; protected JMenuItem addElementToPlaylistMenu; protected JMenuItem closeMenu; public enum ElementType { SIMPLE, MULTIPLE } protected void mouseHandler(MouseEvent e) { contextMenu = createContextMenu(null, ElementType.SIMPLE); contextMenu.show(e.getComponent(), e.getX(), e.getY()); } @Override public void mousePressed(MouseEvent e) { mouseHandler(e); } @Override public void mouseReleased(MouseEvent e) { mouseHandler(e); } protected void assignActionListeners() { previewElementMenu.addActionListener(new EmptyActionListener()); addElementToPlaylistMenu.addActionListener(new EmptyActionListener()); findSimilarElementMenu.addActionListener(new EmptyActionListener()); findNonSimilarElementMenu.addActionListener(new EmptyActionListener()); } protected JPopupMenu createContextMenu(String elementName, ElementType type) { //creating the JPopupMenu and the menu items contextMenu = new JPopupMenu(); previewElementMenu = new JMenuItem(); findSimilarElementMenu = new JMenuItem(); findNonSimilarElementMenu = new JMenuItem(); addElementToPlaylistMenu = new JMenuItem(); closeMenu = new JMenuItem(); //setting the labels for the menu items if (elementName.equals(Messages.COL_TRACK_NAME_LABEL)) { findSimilarElementMenu.setText(Messages.FIND_SIMILAR_TRACKS_LABEL); findNonSimilarElementMenu.setText(Messages.FIND_NON_SIMILAR_TRACKS_LABEL); if (type.equals(ElementType.SIMPLE)) { previewElementMenu.setText(Messages.PREVIEW_TRACK_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_TRACK_PLAYLIST_LABEL); } else { previewElementMenu.setText(Messages.PREVIEW_SEVERAL_TRACKS_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_SEVERAL_TRACKS_PLAYLIST_LABEL); } } else if (elementName.equals(Messages.COL_ALBUM_NAME_LABE)) { findSimilarElementMenu.setText(Messages.FIND_SIMILAR_ALBUMS_LABEL); findNonSimilarElementMenu.setText(Messages.FIND_NON_SIMILAR_ALBUMS_LABEL); if (type.equals(ElementType.SIMPLE)) { previewElementMenu.setText(Messages.PREVIEW_ALBUM_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_ALBUM_PLAYLIST_LABEL); } else { previewElementMenu.setText(Messages.PREVIEW_SEVERAL_ALBUMS_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_SEVERAL_ALBUMS_PLAYLIST_LABEL); } } else if (elementName.equals(Messages.COL_ARTIST_NAME_LABEL)) { findSimilarElementMenu.setText(Messages.FIND_SIMILAR_ARTISTS_LABEL); findNonSimilarElementMenu.setText(Messages.FIND_NON_SIMILAR_ARTISTS_LABEL); if (type.equals(ElementType.SIMPLE)) { previewElementMenu.setText(Messages.PREVIEW_ARTIST_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_ARTIST_PLAYLIST_LABEL); } else { previewElementMenu.setText(Messages.PREVIEW_SEVERAL_ARTISTS_LABEL); addElementToPlaylistMenu.setText(Messages.ADD_SEVERAL_ARTISTS_PLAYLIST_LABEL); } } else { return contextMenu; } closeMenu.setText(Messages.CLOSE_LABEL); assignActionListeners(); contextMenu.add(previewElementMenu); contextMenu.add(findSimilarElementMenu); contextMenu.add(findNonSimilarElementMenu); contextMenu.add(addElementToPlaylistMenu); contextMenu.addSeparator(); contextMenu.add(closeMenu); return contextMenu; } }