RepeatModeAction() { super( Messages.getString("JajukJMenuBar.10"), IconLoader.getIcon(JajukIcons.REPEAT), "ctrl T", true, false); setShortDescription(Messages.getString("CommandJPanel.1")); }
/** Instantiates a new paste action. */ PasteAction() { super( Messages.getString("ActionMove.0"), IconLoader.getIcon(JajukIcons.PASTE), "ctrl V", true, false); setShortDescription(Messages.getString("ActionMove.0")); }
/** Instantiates a new mute action. */ MuteAction() { super( Messages.getString("JajukWindow.2"), IconLoader.getIcon(JajukIcons.VOLUME_LEVEL1), "F8", true, true); setShortDescription(Messages.getString("JajukWindow.19")); }
/** Instantiates a new copy action. */ CopyAction() { super( Messages.getString("FilesTreeView.3"), IconLoader.getIcon(JajukIcons.COPY), "ctrl C", true, false); setShortDescription(Messages.getString("FilesTreeView.3")); }
/** * Gets the nothing found panel. * * @return a panel with text explaining why no item has been found */ JPanel getNothingFoundPanel() { JPanel out = new JPanel(new MigLayout("ins 5", "grow")); JEditorPane jteNothing = new JEditorPane("text/html", Messages.getString("SuggestionView.7")); jteNothing.setBorder(null); jteNothing.setEditable(false); jteNothing.setOpaque(false); jteNothing.setToolTipText(Messages.getString("SuggestionView.7")); out.add(jteNothing, "center,grow"); return out; }
/* (non-Javadoc) * @see org.jajuk.ui.actions.JajukAction#perform(java.awt.event.ActionEvent) */ @Override public void perform(ActionEvent evt) { final JEditorPane text = new JEditorPane("text/html", getTraces()); text.setEditable(false); text.setMargin(new Insets(10, 10, 10, 10)); text.setOpaque(true); text.setBackground(Color.WHITE); text.setForeground(Color.DARK_GRAY); text.setFont(FontManager.getInstance().getFont(JajukFont.BOLD)); final JDialog dialog = new JDialog(JajukMainWindow.getInstance(), Messages.getString("DebugLogAction.0"), false); JButton jbCopy = new JButton( Messages.getString("DebugLogAction.2"), IconLoader.getIcon(JajukIcons.COPY_TO_CLIPBOARD)); jbCopy.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { StringSelection data = new StringSelection(text.getText()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(data, data); } }); JButton jbRefresh = new JButton(Messages.getString("DebugLogAction.1"), IconLoader.getIcon(JajukIcons.REFRESH)); jbRefresh.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Refresh traces text.setText(getTraces()); } }); JButton jbClose = new JButton(Messages.getString("Close"), IconLoader.getIcon(JajukIcons.CLOSE)); jbClose.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialog.dispose(); } }); dialog.setLayout(new MigLayout("insets 10", "[grow]")); JScrollPane panel = new JScrollPane(text); UtilGUI.setEscapeKeyboardAction(dialog, panel); dialog.add(panel, "grow,wrap"); dialog.add(jbCopy, "split 3,right,sg button"); dialog.add(jbRefresh, "split 3,right,sg button"); dialog.add(jbClose, "right,sg button"); dialog.setPreferredSize(new Dimension(800, 600)); dialog.pack(); dialog.setLocationRelativeTo(JajukMainWindow.getInstance()); dialog.setVisible(true); }
/** * Return label for a type. * * @param type * @return label for a type */ public static String getTypeLabel(Type type) { if (type == Type.DIRECTORY) { return Messages.getString("Device_type.directory"); } else if (type == Type.FILES_CD) { return Messages.getString("Device_type.file_cd"); } else if (type == Type.EXTDD) { return Messages.getString("Device_type.extdd"); } else if (type == Type.PLAYER) { return Messages.getString("Device_type.player"); } else if (type == Type.NETWORK_DRIVE) { return Messages.getString("Device_type.network_drive"); } else { return null; } }
/** * Mount the device. * * @param bManual set whether mount is manual or auto * @return whether the device has been mounted. If user is asked for mounting but cancel, this * method returns false. * @throws JajukException if device cannot be mounted due to technical reason. */ public boolean mount(final boolean bManual) throws JajukException { if (bMounted) { // Device already mounted throw new JajukException(111); } // Check if we can mount the device. boolean readyToMount = checkDevice(); // Effective mounting if available. if (readyToMount) { bMounted = true; } else if (pathExists() && isVoid() && bManual) { // If the device is void and in manual mode, leave a chance to the user to // force it final int answer = Messages.getChoice( "[" + getName() + "] " + Messages.getString("Confirmation_void_refresh"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); // leave if user doesn't confirm to mount the void device if (answer != JOptionPane.YES_OPTION) { return false; } else { bMounted = true; } } else { throw new JajukException(11, "\"" + getName() + "\" at URL : " + getUrl()); } // notify views to refresh if needed ObservationManager.notify(new JajukEvent(JajukEvents.DEVICE_MOUNT)); return bMounted; }
/** * Return the result panel for local albums. * * @param type * @return the local suggestions panel */ JScrollPane getLocalSuggestionsPanel(SuggestionType type) { FlowScrollPanel out = new FlowScrollPanel(); out.setLayout(new FlowLayout(FlowLayout.LEFT)); JScrollPane jsp = new JScrollPane( out, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); jsp.setBorder(null); out.setScroller(jsp); List<Album> albums = null; if (type == SuggestionType.BEST_OF) { albums = albumsPrefered; } else if (type == SuggestionType.NEWEST) { albums = albumsNewest; } else if (type == SuggestionType.RARE) { albums = albumsRare; } if (albums != null && albums.size() > 0) { for (Album album : albums) { LocalAlbumThumbnail thumb = new LocalAlbumThumbnail(album, 100, false); thumb.populate(); thumb.getIcon().addMouseListener(new ThumbMouseListener()); out.add(thumb); } } else { out.add(UtilGUI.getCentredPanel(new JLabel(Messages.getString("WikipediaView.3")))); } return jsp; }
/** * Prepare manual refresh. * * @param bAsk ask user to perform deep or fast refresh * @return the user choice (deep or fast) * @throws JajukException if user canceled, device cannot be refreshed or device already * refreshing */ int prepareRefresh(final boolean bAsk) throws JajukException { if (bAsk) { final Object[] possibleValues = { Messages.getString("FilesTreeView.60"), // fast Messages.getString("FilesTreeView.61"), // deep Messages.getString("Cancel") }; // cancel try { SwingUtilities.invokeAndWait( new Runnable() { @Override public void run() { choice = JOptionPane.showOptionDialog( JajukMainWindow.getInstance(), Messages.getString("FilesTreeView.59"), Messages.getString("Option"), JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, possibleValues, possibleValues[0]); } }); } catch (Exception e) { Log.error(e); choice = Device.OPTION_REFRESH_CANCEL; } if (choice == Device.OPTION_REFRESH_CANCEL) { // Cancel return choice; } } // JajukException are not trapped, will be thrown to the caller final Device device = this; if (!device.isMounted()) { // Leave if user canceled device mounting if (!device.mount(true)) { return Device.OPTION_REFRESH_CANCEL; } } if (bAlreadyRefreshing) { throw new JajukException(107); } return choice; }
/** * Constructor * * @param lsl */ public SearchBox(ListSelectionListener lsl) { this.lsl = lsl; timer.start(); addKeyListener(this); setToolTipText(Messages.getString("SearchBox.0")); setBorder(BorderFactory.createEtchedBorder()); setFont(FontManager.getInstance().getFont(JajukFont.SEARCHBOX)); Color mediumGray = new Color(172, 172, 172); setForeground(mediumGray); setBorder(BorderFactory.createLineBorder(Color.BLUE)); }
/** Instantiates a new ambience wizard. */ public AmbienceWizard() { super( new Wizard.Builder( Messages.getString("DigitalDJWizard.56"), AmbienceScreen.class, JajukMainWindow.getInstance()) .hSize(600) .vSize(500) .locale(LocaleManager.getLocale()) .icon(IconLoader.getIcon(JajukIcons.AMBIENCE))); }
@Override public void finish() { for (final Ambience ambience : AmbienceWizard.ambiences) { AmbienceManager.getInstance().registerAmbience(ambience); } // commit it to avoid it is lost before the app close AmbienceManager.getInstance().commit(); // Refresh UI ObservationManager.notify(new JajukEvent(JajukEvents.AMBIENCES_CHANGE)); InformationJPanel.getInstance() .setMessage(Messages.getString("Success"), InformationJPanel.MessageType.INFORMATIVE); }
/** Populate ambiences combo */ void populateAmbiences() { ambiencesCombo.removeActionListener(ambienceListener); ItemListener[] il = ambiencesCombo.getItemListeners(); for (int i = 0; i < il.length; i++) { ambiencesCombo.removeItemListener(il[i]); } ambiencesCombo.removeAllItems(); ambiencesCombo.addItem( new JLabel( Messages.getString("CommandJPanel.19"), IconLoader.ICON_CONFIGURATION, SwingConstants.LEFT)); ambiencesCombo.addItem( new JLabel( "<html><i>" + Messages.getString("DigitalDJWizard.64") + "</i></html>", IconLoader.ICON_STYLE, SwingConstants.LEFT)); // Add available ambiences for (final Ambience ambience : AmbienceManager.getInstance().getAmbiences()) { ambiencesCombo.addItem( new JLabel(ambience.getName(), IconLoader.ICON_STYLE, SwingConstants.LEFT)); } // Select right item Ambience defaultAmbience = AmbienceManager.getInstance() .getAmbience(ConfigurationManager.getProperty(CONF_DEFAULT_AMBIENCE)); if (defaultAmbience != null) { for (int i = 0; i < ambiencesCombo.getItemCount(); i++) { if (((JLabel) ambiencesCombo.getItemAt(i)).getText().equals(defaultAmbience.getName())) { ambiencesCombo.setSelectedIndex(i); break; } } } else { // or "any" ambience ambiencesCombo.setSelectedIndex(1); } ambiencesCombo.addActionListener(ambienceListener); }
/** * Constructor with specified file filter * * @param jfilter filter to use */ public JajukFileChooser(JajukFileFilter jfilter) { setDialogTitle(Messages.getString("JajukFileChooser.0")); this.filter = jfilter; for (int i = 0; i < jfilter.getFilters().length; i++) { addChoosableFileFilter(jfilter.getFilters()[i]); } setMultiSelectionEnabled(true); // don't hide hidden files setFileHidingEnabled(false); setAcceptAllFileFilterUsed(false); // Use default directory to store documents (My Documents under Windows // for ie) setCurrentDirectory(FileSystemView.getFileSystemView().getDefaultDirectory()); }
/** Populate DJs */ private void populateDJs() { try { ddbDDJ.setToolTipText( "<html>" + Messages.getString("CommandJPanel.18") + "<p><b>" + DigitalDJManager.getCurrentDJ() + "</b></html>"); popupDDJ.removeAll(); JMenuItem jmiNew = new JMenuItem(ActionManager.getAction(CONFIGURE_DJS)); popupDDJ.add(jmiNew); Iterator<DigitalDJ> it = DigitalDJManager.getInstance().getDJs().iterator(); while (it.hasNext()) { final DigitalDJ dj = it.next(); JCheckBoxMenuItem jmi = new JCheckBoxMenuItem(dj.getName(), IconLoader.ICON_DIGITAL_DJ_16x16); jmi.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { ConfigurationManager.setProperty(CONF_DEFAULT_DJ, dj.getID()); DigitalDJManager.setCurrentDJ(dj); // force to reselect the item populateDJs(); // update action tooltip on main button with right item ActionBase action = ActionManager.getAction(JajukAction.DJ); action.setShortDescription( "<html>" + Messages.getString("CommandJPanel.18") + "<p><b>" + dj.getName() + "</b></p></html>"); } }); popupDDJ.add(jmi); jmi.setSelected(ConfigurationManager.getProperty(CONF_DEFAULT_DJ).equals(dj.getID())); } } catch (Exception e) { Log.error(e); } }
/** * Update global functions tooltip after a change in ambiences or an ambience selection using the * ambience selector */ private void updateTooltips() { // Selected 'Any" ambience if (ambiencesCombo.getSelectedIndex() == 1) { ActionBase action = ActionManager.getAction(JajukAction.NOVELTIES); action.setShortDescription(Messages.getString("JajukWindow.31")); action = ActionManager.getAction(JajukAction.BEST_OF); action.setShortDescription(Messages.getString("JajukWindow.24")); action = ActionManager.getAction(JajukAction.SHUFFLE_GLOBAL); action.setShortDescription(Messages.getString("JajukWindow.23")); } else { // Selected an ambience Ambience ambience = AmbienceManager.getInstance() .getAmbienceByName(((JLabel) ambiencesCombo.getSelectedItem()).getText()); ActionBase action = ActionManager.getAction(JajukAction.NOVELTIES); action.setShortDescription( "<html>" + Messages.getString("JajukWindow.31") + "<p><b>" + ambience.getName() + "</b></p></html>"); action = ActionManager.getAction(JajukAction.SHUFFLE_GLOBAL); action.setShortDescription( "<html>" + Messages.getString("JajukWindow.23") + "<p><b>" + ambience.getName() + "</b></p></html>"); action = ActionManager.getAction(JajukAction.BEST_OF); action.setShortDescription( "<html>" + Messages.getString("JajukWindow.24") + "<p><b>" + ambience.getName() + "</b></p></html>"); } }
/** Create out of the box ambiences */ public void createDefaultAmbiences() { // Define default ambience by style name String[] stylesRockPop = new String[] { "Classic Rock", "Pop", "Rock", "Ska", "AlternRock", "Instrumental Pop", "Instrumental Rock", "Southern Rock", "Pop/Funk", "Folk-Rock", "Rock & Roll", "Symphonic Rock", "Ballad", "Christian Rock", "JPop", "SynthPop" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("0", Messages.getString("Ambience.0"), stylesRockPop)); String[] stylesRap = new String[] { "Hip-Hop", "R&B", "Rap", "Fusion", "Gangsta", "Christian Rap", "P**n Groove", "Rhytmic Soul", "Christian Gangsta" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("1", Messages.getString("Ambience.1"), stylesRap)); String[] stylesHardRock = new String[] { "Grunge", "Metal", "Industrial", "Death Metal", "Fusion", "Punk", "Gothic", "Darkwave", "Fast Fusion", "Hard Rock", "Gothic Rock", "Progressive Rock", "Punk Rock", "Terror", "Negerpunk", "Polsk Punk", "Heavy Metal", "Black Metal", "Thrash Metal" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("2", Messages.getString("Ambience.2"), stylesHardRock)); String[] stylesTechno = new String[] { "Dance", "New Age", "Techno", "Euro-Techno", "Ambient", "Trance", "House", "Game", "Space", "Techno-Industrial", "Eurodance", "Dream", "Jungle", "Rave", "Euro-House", "Goa", "Club-House", "Hardcore", "Beat" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("3", Messages.getString("Ambience.3"), stylesTechno)); String[] stylesElectro = new String[] {"Trip-Hop", "Acid", "Electronic", "Club"}; AmbienceManager.getInstance() .registerAmbience(new Ambience("4", Messages.getString("Ambience.4"), stylesElectro)); String[] stylesClassical = new String[] {"Classical", "Chorus", "Opera", "Chamber Music", "Sonata", "Symphony"}; AmbienceManager.getInstance() .registerAmbience(new Ambience("5", Messages.getString("Ambience.5"), stylesClassical)); String[] stylesSoft = new String[] { "Reggae", "Acid Jazz", "Slow Rock", "Jazz", "Easy Listening", "Acoustic", "Ballad" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("6", Messages.getString("Ambience.6"), stylesSoft)); String[] stylesParty = new String[] { "Dance", "Disco", "Funk", "Ska", "Soul", "Eurodance", "Big Band", "Club", "Rhytmic Soul", "Dance Hall", "Club-House" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("7", Messages.getString("Ambience.7"), stylesParty)); String[] stylesJazzBlues = new String[] {"Jazz", "Jazz+Funk", "Bass", "Acid Jazz"}; AmbienceManager.getInstance() .registerAmbience(new Ambience("8", Messages.getString("Ambience.8"), stylesJazzBlues)); String[] stylesWorld = new String[] { "Ethnic", "Native American", "Tribal", "Polka", "Celtic", "Folklore", "Indie" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("9", Messages.getString("Ambience.9"), stylesWorld)); String[] stylesOthers = new String[] { "Other", "Alternative", "Soundtrack", "Vocal", "Meditative", "Comedy", "Humour", "Speech", "Anime" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("10", Messages.getString("Ambience.10"), stylesOthers)); String[] stylesFolkOldies = new String[] { "Country", "Oldies", "Gospel", "Pop-Folk", "Southern Rock", "Cabaret", "Retro", "Folk-Rock", "National Folk", "Swing", "Rock & Roll", "Folk", "Revival", "Chanson" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("11", Messages.getString("Ambience.11"), stylesFolkOldies)); String[] stylesInde = new String[] { "Noise", "AlternRock", "New Wave", "Psychedelic", "Acid Punk", "Avantgarde", "Psychedelic Rock", "Freestyle", "Drum Solo", "Drum & Bass" }; AmbienceManager.getInstance() .registerAmbience(new Ambience("12", Messages.getString("Ambience.12"), stylesInde)); String[] stylesLatin = new String[] {"Latin", "Tango", "Samba", "Acapella", "Salsa"}; AmbienceManager.getInstance() .registerAmbience(new Ambience("13", Messages.getString("Ambience.13"), stylesLatin)); }
public void initUI() { // Search double[][] sizeSearch = new double[][] {{3, TableLayout.PREFERRED, 3, 100}, {25}}; JPanel jpSearch = new JPanel(new TableLayout(sizeSearch)); sbSearch = new SearchBox(CommandJPanel.this); JLabel jlSearch = new JLabel(IconLoader.ICON_SEARCH); jlSearch.setToolTipText(Messages.getString("CommandJPanel.23")); // Clear search text when clicking on the search icon jlSearch.addMouseListener( new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { sbSearch.setText(""); } }); jpSearch.add(jlSearch, "1,0"); jpSearch.add(sbSearch, "3,0"); // History JPanel jpHistory = new JPanel(); jcbHistory = new SteppedComboBox(); JLabel jlHistory = new JLabel(IconLoader.ICON_HISTORY); jlHistory.setToolTipText(Messages.getString("CommandJPanel.0")); // - Increase rating button ActionBase actionIncRate = ActionManager.getAction(JajukAction.INC_RATE); actionIncRate.setName(null); final JPopupMenu jpmIncRating = new JPopupMenu(); for (int i = 1; i <= 10; i++) { final int j = i; JMenuItem jmi = new JMenuItem("+" + i); if (ConfigurationManager.getInt(CONF_INC_RATING) == i) { jmi.setFont(FontManager.getInstance().getFont(JajukFont.BOLD)); } // Store selected value jmi.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ConfigurationManager.setProperty(CONF_INC_RATING, "" + j); } }); jpmIncRating.add(jmi); } jbIncRate = new DropDownButton(IconLoader.ICON_INC_RATING) { private static final long serialVersionUID = 1L; @Override protected JPopupMenu getPopupMenu() { return jpmIncRating; } }; jbIncRate.setAction(actionIncRate); // we use a combo box model to make sure we get good performances after // rebuilding the entire model like after a refresh jcbHistory.setModel(new DefaultComboBoxModel(History.getInstance().getHistory())); // None selection because if we start in stop mode, a selection of the // first item will not launch the track because the selected item is // still the same and no action event is thrown (Java >= 1.6) jcbHistory.setSelectedItem(null); int iWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2); // size of popup jcbHistory.setPopupWidth(iWidth); // size of the combo itself, keep it! as text can be very long jcbHistory.setPreferredSize(new Dimension(250, 25)); jcbHistory.setMinimumSize(new Dimension(0, 25)); jcbHistory.setToolTipText(Messages.getString("CommandJPanel.0")); jcbHistory.addActionListener(CommandJPanel.this); JToolBar jtbIncRate = new JToolBar(); jtbIncRate.setFloatable(false); jbIncRate.addToToolBar(jtbIncRate); double[][] sizeHistory = new double[][] { {3, TableLayout.PREFERRED, 3, TableLayout.FILL, 10, TableLayout.PREFERRED}, {25} }; jpHistory.setLayout(new TableLayout(sizeHistory)); jpHistory.add(jlHistory, "1,0"); jpHistory.add(jcbHistory, "3,0"); jpHistory.add(jtbIncRate, "5,0"); // Mode toolbar // we need an inner toolbar to apply size properly JToolBar jtbModes = new JToolBar(); jtbModes.setBorder(null); // make it not floatable as this behavior is managed by vldocking jtbModes.setFloatable(false); jtbModes.setRollover(true); jbRepeat = new JajukToggleButton(ActionManager.getAction(JajukAction.REPEAT_MODE_STATUS_CHANGE)); jbRepeat.setSelected(ConfigurationManager.getBoolean(CONF_STATE_REPEAT)); jbRandom = new JajukToggleButton(ActionManager.getAction(JajukAction.SHUFFLE_MODE_STATUS_CHANGED)); jbRandom.setSelected(ConfigurationManager.getBoolean(CONF_STATE_SHUFFLE)); jbContinue = new JajukToggleButton(ActionManager.getAction(JajukAction.CONTINUE_MODE_STATUS_CHANGED)); jbContinue.setSelected(ConfigurationManager.getBoolean(CONF_STATE_CONTINUE)); jbIntro = new JajukToggleButton(ActionManager.getAction(JajukAction.INTRO_MODE_STATUS_CHANGED)); jbIntro.setSelected(ConfigurationManager.getBoolean(CONF_STATE_INTRO)); jtbModes.add(jbRepeat); jtbModes.addSeparator(); jtbModes.add(jbRandom); jtbModes.addSeparator(); jtbModes.add(jbContinue); jtbModes.addSeparator(); jtbModes.add(jbIntro); // Volume jpVolume = new JPanel(); ActionUtil.installKeystrokes( jpVolume, ActionManager.getAction(JajukAction.DECREASE_VOLUME), ActionManager.getAction(JajukAction.INCREASE_VOLUME)); jpVolume.setLayout(new BoxLayout(jpVolume, BoxLayout.X_AXIS)); int iVolume = (int) (100 * ConfigurationManager.getFloat(CONF_VOLUME)); if (iVolume > 100) { // can occur in some undefined cases iVolume = 100; } jsVolume = new JSlider(0, 100, iVolume); jpVolume.add(jsVolume); jpVolume.add(Box.createHorizontalStrut(5)); jpVolume.add(jbMute); jsVolume.setToolTipText(Messages.getString("CommandJPanel.14")); jsVolume.addChangeListener(CommandJPanel.this); jsVolume.addMouseWheelListener(CommandJPanel.this); // Special functions toolbar // Ambience combo ambiencesCombo = new SteppedComboBox(); iWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 4); ambiencesCombo.setPopupWidth(iWidth); ambiencesCombo.setFont(FontManager.getInstance().getFont(JajukFont.BOLD_L)); // size of the combo itself ambiencesCombo.setRenderer( new BasicComboBoxRenderer() { private static final long serialVersionUID = -6943363556191659895L; public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); JLabel jl = (JLabel) value; setIcon(jl.getIcon()); setText(jl.getText()); return this; } }); ambiencesCombo.setToolTipText(Messages.getString("DigitalDJWizard.66")); populateAmbiences(); ambienceListener = new AmbienceListener(); ambiencesCombo.addActionListener(ambienceListener); jtbSpecial = new JToolBar(); jtbSpecial.setBorder(null); jtbSpecial.setRollover(true); jtbSpecial.setFloatable(false); ddbGlobalRandom = new DropDownButton(IconLoader.ICON_SHUFFLE_GLOBAL) { private static final long serialVersionUID = 1L; @Override protected JPopupMenu getPopupMenu() { return popupGlobalRandom; } }; ddbGlobalRandom.setAction(ActionManager.getAction(JajukAction.SHUFFLE_GLOBAL)); popupGlobalRandom = new JPopupMenu(); // Global shuffle jmiShuffleModeSong = new JRadioButtonMenuItem(Messages.getString("CommandJPanel.20")); jmiShuffleModeSong.addActionListener(this); // album / album jmiShuffleModeAlbum = new JRadioButtonMenuItem(Messages.getString("CommandJPanel.21")); jmiShuffleModeAlbum.addActionListener(this); // Shuffle album / album jmiShuffleModeAlbum2 = new JRadioButtonMenuItem(Messages.getString("CommandJPanel.22")); jmiShuffleModeAlbum2.addActionListener(this); if (ConfigurationManager.getProperty(CONF_GLOBAL_RANDOM_MODE).equals(MODE_TRACK)) { jmiShuffleModeSong.setSelected(true); } else if (ConfigurationManager.getProperty(CONF_GLOBAL_RANDOM_MODE).equals(MODE_ALBUM2)) { jmiShuffleModeAlbum2.setSelected(true); } else { jmiShuffleModeAlbum.setSelected(true); } ButtonGroup bgGlobalRandom = new ButtonGroup(); bgGlobalRandom.add(jmiShuffleModeSong); bgGlobalRandom.add(jmiShuffleModeAlbum); bgGlobalRandom.add(jmiShuffleModeAlbum2); popupGlobalRandom.add(jmiShuffleModeSong); popupGlobalRandom.add(jmiShuffleModeAlbum); popupGlobalRandom.add(jmiShuffleModeAlbum2); ddbGlobalRandom.setText(""); // no text visible jbBestof = new JajukButton(ActionManager.getAction(JajukAction.BEST_OF)); ddbNovelties = new DropDownButton(IconLoader.ICON_NOVELTIES) { private static final long serialVersionUID = 1L; @Override protected JPopupMenu getPopupMenu() { return popupNovelties; } }; ddbNovelties.setAction(ActionManager.getAction(JajukAction.NOVELTIES)); popupNovelties = new JPopupMenu(); jmiNoveltiesModeSong = new JRadioButtonMenuItem(Messages.getString("CommandJPanel.20")); jmiNoveltiesModeSong.addActionListener(this); jmiNoveltiesModeAlbum = new JRadioButtonMenuItem(Messages.getString("CommandJPanel.22")); jmiNoveltiesModeAlbum.addActionListener(this); if (ConfigurationManager.getProperty(CONF_NOVELTIES_MODE).equals(MODE_TRACK)) { jmiNoveltiesModeSong.setSelected(true); } else { jmiNoveltiesModeAlbum.setSelected(true); } ButtonGroup bgNovelties = new ButtonGroup(); bgNovelties.add(jmiNoveltiesModeSong); bgNovelties.add(jmiNoveltiesModeAlbum); popupNovelties.add(jmiNoveltiesModeSong); popupNovelties.add(jmiNoveltiesModeAlbum); ddbNovelties.setText(""); // no text visible jbNorm = new JajukButton(ActionManager.getAction(FINISH_ALBUM)); popupDDJ = new JPopupMenu(); ddbDDJ = new DropDownButton(IconLoader.ICON_DIGITAL_DJ) { private static final long serialVersionUID = 1L; @Override protected JPopupMenu getPopupMenu() { return popupDDJ; } }; ddbDDJ.setAction(ActionManager.getAction(JajukAction.DJ)); populateDJs(); // no text visible ddbDDJ.setText(""); popupWebRadio = new XJPopupMenu(Main.getWindow()); ddbWebRadio = new DropDownButton(IconLoader.ICON_WEBRADIO) { private static final long serialVersionUID = 1L; @Override protected JPopupMenu getPopupMenu() { return popupWebRadio; } }; ddbWebRadio.setAction(ActionManager.getAction(JajukAction.WEB_RADIO)); populateWebRadios(); // no text ddbWebRadio.setText(""); ddbDDJ.addToToolBar(jtbSpecial); ddbNovelties.addToToolBar(jtbSpecial); ddbGlobalRandom.addToToolBar(jtbSpecial); jtbSpecial.add(jbBestof); jtbSpecial.add(jbNorm); // Radio tool bar JToolBar jtbWebRadio = new JToolBar(); jtbWebRadio.setBorder(null); jtbWebRadio.setRollover(true); jtbWebRadio.setFloatable(false); ddbWebRadio.addToToolBar(jtbWebRadio); // Play toolbar JToolBar jtbPlay = new JToolBar(); jtbPlay.setBorder(null); jtbPlay.setFloatable(false); // add some space to get generic size jtbPlay.setRollover(true); ActionUtil.installKeystrokes( jtbPlay, ActionManager.getAction(NEXT_ALBUM), ActionManager.getAction(PREVIOUS_ALBUM)); jbPrevious = new JajukButton(ActionManager.getAction(PREVIOUS_TRACK)); jbNext = new JajukButton(ActionManager.getAction(NEXT_TRACK)); jbRew = new JPressButton(ActionManager.getAction(REWIND_TRACK)); jbPlayPause = new JajukButton(ActionManager.getAction(PLAY_PAUSE_TRACK)); jbStop = new JajukButton(ActionManager.getAction(STOP_TRACK)); jbFwd = new JPressButton(ActionManager.getAction(FAST_FORWARD_TRACK)); jtbPlay.add(jbPrevious); jtbPlay.add(jbRew); jtbPlay.add(jbPlayPause); jtbPlay.add(jbStop); jtbPlay.add(jbFwd); jtbPlay.add(jbNext); // Add items FormLayout layout = new FormLayout( // --columns "3dlu,fill:min(10dlu;p):grow(0.5), 3dlu, " + // ambience "left:p, 2dlu" + // smart toolbar ", min(0dlu;p):grow(0.04), 3dlu," + // glue " right:p, 10dlu, " + // search /modes "fill:p, 5dlu, " + // history/player "fill:min(60dlu;p):grow(0.2),3dlu", // volume/part of // history // --rows "2dlu, p, 2dlu, p, 2dlu"); // rows PanelBuilder builder = new PanelBuilder(layout); // , new // FormDebugPanel() ); CellConstraints cc = new CellConstraints(); // Add items builder.add(jtbWebRadio, cc.xyw(2, 2, 3)); // grid width = 3 builder.add(ambiencesCombo, cc.xy(2, 4)); builder.add(jtbSpecial, cc.xy(4, 4)); builder.add(jpSearch, cc.xyw(6, 2, 4)); builder.add(jpHistory, cc.xyw(10, 2, 4)); builder.add(jtbModes, cc.xy(8, 4)); builder.add(jtbPlay, cc.xy(10, 4)); builder.add(jpVolume, cc.xy(12, 4)); JPanel p = builder.getPanel(); setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); add(p); // register to player events ObservationManager.register(CommandJPanel.this); // if a track is playing, display right state if (FIFO.getInstance().getCurrentFile() != null) { // update initial state update( new Event( EventSubject.EVENT_PLAYER_PLAY, ObservationManager.getDetailsLastOccurence(EventSubject.EVENT_PLAYER_PLAY))); // update the history bar update(new Event(EventSubject.EVENT_FILE_LAUNCHED)); // check if some track has been launched before the view has been // displayed update(new Event(EventSubject.EVENT_HEART_BEAT)); } // start timer timer.start(); }
SaveAsAction() { super( Messages.getString("PhysicalPlaylistRepositoryView.2"), IconLoader.getIcon(JajukIcons.SAVE_AS), true); }
/** Instantiates a new push selection action. */ PushSelectionAction() { super(Messages.getString("TracksTableView.8"), IconLoader.getIcon(JajukIcons.PUSH), true); setShortDescription(Messages.getString("TracksTableView.8")); }
/** * Display currently copied file to information panel. * * @param file */ private void showMessage(java.io.File file) { String message = Messages.getString("Device.45"); message += file.getAbsolutePath() + "]"; InformationJPanel.getInstance().setMessage(message, InformationJPanel.MessageType.INFORMATIVE); }
/* * (non-Javadoc) * * @see org.jajuk.ui.views.IView#populate() */ @Override public void initUI() { tabs = new JTabbedPane(); // Remove tab border, see // http://forum.java.sun.com/thread.jspa?threadID=260746&messageID=980405 class MyTabbedPaneUI extends javax.swing.plaf.basic.BasicTabbedPaneUI { @Override protected Insets getContentBorderInsets(int tabPlacement) { return new Insets(0, 0, 0, 0); } @Override protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) { // nothing to do here... } } // Now use the new TabbedPaneUI tabs.setUI(new MyTabbedPaneUI()); // Fill tabs with empty tabs tabs.addTab( Messages.getString("SuggestionView.1"), UtilGUI.getCentredPanel(new JLabel(Messages.getString("WikipediaView.3")))); tabs.addTab( Messages.getString("SuggestionView.2"), UtilGUI.getCentredPanel(new JLabel(Messages.getString("WikipediaView.3")))); tabs.addTab( Messages.getString("SuggestionView.5"), UtilGUI.getCentredPanel(new JLabel(Messages.getString("WikipediaView.3")))); tabs.addTab( Messages.getString("SuggestionView.3"), new JLabel(Messages.getString("SuggestionView.7"))); tabs.addTab( Messages.getString("SuggestionView.4"), new JLabel(Messages.getString("SuggestionView.7"))); // Refresh tabs on demand only, add changelisterner after tab creation to // avoid that the stored tab is overwrited at startup tabs.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { refreshLastFMCollectionTabs(); // store the selected tab Conf.setProperty( getClass().getName() + "_" + ((getPerspective() == null) ? "solo" : getPerspective().getID()), Integer.toString(tabs.getSelectedIndex()).toString()); } }); if (Conf.containsProperty( getClass().getName() + "_" + ((getPerspective() == null) ? "solo" : getPerspective().getID()))) { int index = Conf.getInt( getClass().getName() + "_" + ((getPerspective() == null) ? "solo" : getPerspective().getID())); if (index > 0 && index < tabs.getTabCount()) { tabs.setSelectedIndex(index); } } // Add panels refreshLocalCollectionTabs(); // Add tabs setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); add(tabs); // Look for events ObservationManager.register(this); }
/* * (non-Javadoc) * * @see org.jajuk.ui.views.IView#getDesc() */ @Override public String getDesc() { return Messages.getString("SuggestionView.0"); }
/** Refresh last fm collection tabs. */ private void refreshLastFMCollectionTabs() { String newArtist = null; File current = QueueModel.getPlayingFile(); if (current != null) { newArtist = current.getTrack().getArtist().getName2(); } // if none track playing if (current == null // Last.FM infos is disable || !Conf.getBoolean(Const.CONF_LASTFM_INFO) // None internet access option is set || Conf.getBoolean(Const.CONF_NETWORK_NONE_INTERNET_ACCESS) // If unknown artist || (newArtist == null || newArtist.equals(Messages.getString(UNKNOWN_ARTIST)))) { // Set empty panels SwingUtilities.invokeLater( new Runnable() { @Override public void run() { stopAllBusyLabels(); tabs.setComponentAt(3, new JLabel(Messages.getString("SuggestionView.7"))); tabs.setComponentAt(4, new JLabel(Messages.getString("SuggestionView.7"))); } }); return; } // Check if artist changed, otherwise, just leave if (newArtist.equals(this.artist)) { return; } // Save current artist artist = newArtist; // Display a busy panel in the mean-time SwingUtilities.invokeLater( new Runnable() { @Override public void run() { JXBusyLabel busy1 = new JXBusyLabel(); busy1.setBusy(true); JXBusyLabel busy2 = new JXBusyLabel(); busy2.setBusy(true); // stop all existing busy labels before we add the new ones... stopAllBusyLabels(); tabs.setComponentAt(3, UtilGUI.getCentredPanel(busy1)); tabs.setComponentAt(4, UtilGUI.getCentredPanel(busy2)); } }); // Use a swing worker as construct takes a lot of time SwingWorker<Void, Void> sw = new SwingWorker<Void, Void>() { JScrollPane jsp1; JScrollPane jsp2; @Override public Void doInBackground() { try { // Fetch last.fm calls and downloads covers preFetchOthersAlbum(); preFetchSimilarArtists(); } catch (Exception e) { Log.error(e); } return null; } @Override public void done() { jsp1 = getLastFMSuggestionsPanel(SuggestionType.OTHERS_ALBUMS, false); jsp2 = getLastFMSuggestionsPanel(SuggestionType.SIMILAR_ARTISTS, false); stopAllBusyLabels(); tabs.setComponentAt(3, (jsp1 == null) ? new JPanel() : jsp1); tabs.setComponentAt(4, (jsp2 == null) ? new JPanel() : jsp2); } }; sw.execute(); }
/** Create common UI for property wizards */ void populate() { getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); Util.setShuffleLocation(this, 400, 400); jlItemChoice = new JLabel(Messages.getString("CustomPropertyWizard.0")); jlName = new JLabel(Messages.getString("CustomPropertyWizard.1")); jcbItemChoice = new JComboBox(); jcbItemChoice.addItem(Messages.getString("Item_Track")); jcbItemChoice.addItem(Messages.getString("Item_File")); jcbItemChoice.addItem(Messages.getString("Item_Style")); jcbItemChoice.addItem(Messages.getString("Item_Author")); jcbItemChoice.addItem(Messages.getString("Item_Album")); jcbItemChoice.addItem(Messages.getString("Item_Device")); jcbItemChoice.addItem(Messages.getString("Item_Directory")); jcbItemChoice.addItem(Messages.getString("Item_Playlist")); // playlist // jcbItemChoice.addItem(Messages.getString("Item_Year")); // file // actually // okp = new OKCancelPanel(this); okp.getOKButton().setEnabled(false); // In physical perspective, default item is file, otherwise, it is track if (PerspectiveManager.getCurrentPerspective().getClass().equals(FilesPerspective.class)) { jcbItemChoice.setSelectedIndex(1); } else { jcbItemChoice.setSelectedIndex(0); } jcbItemChoice.addItemListener(this); jpMain = new JPanel(); }
/** Instantiates a new slimbar action. */ SlimbarAction() { super( Messages.getString("JajukSlimWindow.0"), IconLoader.getIcon(JajukIcons.SLIM_WINDOW), true); setShortDescription(Messages.getString("JajukSlimWindow.0")); }
/* * (non-Javadoc) * * @see org.jajuk.ui.views.IView#populate() */ public void initUI() { jlLanguage = new JLabel(Messages.getString("WikipediaView.1")); jcbLanguage = new JComboBox(); for (String sDesc : Messages.getDescs()) { jcbLanguage.addItem(sDesc); } // get stored language jcbLanguage.setSelectedItem( Messages.getDescForLocal(ConfigurationManager.getProperty(CONF_WIKIPEDIA_LANGUAGE))); jcbLanguage.addActionListener(this); // Buttons ActionBase aCopy = ActionManager.getAction(JajukAction.COPY_TO_CLIPBOARD); jbCopy = new JButton(aCopy); jbLaunchInExternalBrowser = new JButton(ActionManager.getAction(JajukAction.LAUNCH_IN_BROWSER)); // Remove text inside the buttons jbLaunchInExternalBrowser.setText(null); jbCopy.setText(null); ButtonGroup bg = new ButtonGroup(); jbAuthorSearch = new JToggleButton(IconLoader.ICON_AUTHOR, false); jbAuthorSearch.setToolTipText(Messages.getString("WikipediaView.5")); // Select author search (default) jbAuthorSearch.setSelected(true); jbAuthorSearch.addActionListener(this); jbAlbumSearch = new JToggleButton(IconLoader.ICON_ALBUM, true); jbAlbumSearch.setToolTipText(Messages.getString("WikipediaView.6")); jbAlbumSearch.addActionListener(this); jbTrackSearch = new JToggleButton(IconLoader.ICON_TRACK, false); jbTrackSearch.setToolTipText(Messages.getString("WikipediaView.7")); jbTrackSearch.addActionListener(this); // Group this three mutual exclusive buttons bg.add(jbAuthorSearch); bg.add(jbAlbumSearch); bg.add(jbTrackSearch); JToolBar jtb = new JToolBar(); jtb.setFloatable(false); jtb.setRollover(true); jtb.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); // Add items jtb.add(jbAuthorSearch); jtb.add(jbAlbumSearch); jtb.add(jbTrackSearch); jtb.addSeparator(); jtb.add(jbCopy); jtb.add(jbLaunchInExternalBrowser); jtb.addSeparator(); jtb.add(jcbLanguage); JPanel jpCommand = new JPanel(); jpCommand.setBorder(BorderFactory.createEtchedBorder()); jpCommand.setLayout(new FlowLayout(FlowLayout.LEFT)); jpCommand.add(jtb); // global layout double size[][] = {{2, TableLayout.FILL, 5}, {TableLayout.PREFERRED, 5, TableLayout.FILL}}; setLayout(new TableLayout(size)); browser = new JajukHtmlPanel(); add(jpCommand, "1,0"); add(browser, "1,2"); // Display default page at startup is none track launch // avoid to launch this if a track is playing // to avoid thread concurrency if (FIFO.getInstance().getCurrentFile() == null) { reset(); } // subscriptions to events ObservationManager.register(WikipediaView.this); // force event update( new Event( EventSubject.EVENT_FILE_LAUNCHED, ObservationManager.getDetailsLastOccurence(EventSubject.EVENT_FILE_LAUNCHED))); }
CDDBSelectionAction() { super(Messages.getString("TracksTreeView.34"), IconLoader.getIcon(JajukIcons.CDDB), true); setShortDescription(Messages.getString("TracksTreeView.34")); }
/* * (non-Javadoc) * * @see org.jajuk.ui.views.IView#getDesc() */ public String getDesc() { return Messages.getString("WikipediaView.0"); }