/** * Test device accessibility. * * @return true if the device is available */ public boolean test() { UtilGUI.waiting(); // waiting cursor boolean bOK = false; boolean bWasMounted = bMounted; // store mounted state of device before // mount test try { if (!bMounted) { mount(true); } } catch (final Exception e) { UtilGUI.stopWaiting(); return false; } if (getLongValue(Const.XML_TYPE) != 5) { // not a remote device final File file = new File(sUrl); if (file.exists() && file.canRead()) { // see if the url exists // and is readable // check if this device was void boolean bVoid = true; for (org.jajuk.base.File f : FileManager.getInstance().getFiles()) { if (f.getDirectory().getDevice().equals(this)) { // at least one field in this device bVoid = false; break; } } if (!bVoid) { // if the device is not supposed to be void, // check if it is the case, if no, the device // must not be unix-mounted if (file.list().length > 0) { bOK = true; } } else { // device is void, OK we assume it is accessible bOK = true; } } } else { bOK = false; // TBI } // unmount the device if it was mounted only for the test if (!bWasMounted) { try { unmount(false, false); } catch (final Exception e1) { Log.error(e1); } } UtilGUI.stopWaiting(); return bOK; }
/** * Invoked when an action occurs. * * @param evt */ @Override public void perform(ActionEvent evt) { boolean b = Conf.getBoolean(Const.CONF_STATE_REPEAT); UtilGUI.setRepeatSingleGui(!b); QueueModel.setRepeatModeToAll(false); if (!b) { // enabled button // if FIFO is not void, repeat over current item StackItem item = QueueModel.getCurrentItem(); if (item != null) { item.setRepeat(true); } } else { // disable repeat mode if (Conf.getBoolean(Const.CONF_DROP_PLAYED_TRACKS_FROM_QUEUE)) { // remove tracks before current position QueueModel.remove(0, QueueModel.getIndex() - 1); QueueModel.setIndex(0); // select first track } } // computes planned tracks QueueModel.computesPlanned(false); // Refresh Queue View ObservationManager.notify(new JajukEvent(JajukEvents.QUEUE_NEED_REFRESH)); }
/* * (non-Javadoc) * * @see org.jajuk.ui.actions.JajukAction#perform(java.awt.event.ActionEvent) */ @Override public void perform(ActionEvent evt) throws Exception { /* * If slimbar is visible, hide it and show the main window. Note that both main window and * slimbar can be displayed at the same time: If the slimbar is visible and user display main * window by right clicking on the tray, the main window is displayed, this is a normal behavior */ WindowStateDecorator sdSlimbar = JajukSlimbar.getInstance().getWindowStateDecorator(); WindowStateDecorator sdMainWindow = JajukMainWindow.getInstance().getWindowStateDecorator(); if (sdSlimbar.isDisplayed()) { // close the previous window before displaying the other sdSlimbar.display(false); sdMainWindow.display(true); // Update the icon according to status setIcon(IconLoader.getIcon(JajukIcons.SLIM_WINDOW)); } else { sdMainWindow.display(false); sdSlimbar.display(true); // Update the icon according to status setIcon(IconLoader.getIcon(JajukIcons.FULL_SCREEN)); } // Store window-type displayed (useful for tray display/hide feature for ie.) UtilGUI.storeWindowSate(); // Notify that slimbar visibility change (menu bar is interested in it) ObservationManager.notify(new JajukEvent(JajukEvents.SLIMBAR_VISIBILTY_CHANGED)); }
/** * 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; }
/* (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); }
/* * (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); }