📄 tagsearch.java
字号:
restrictedPlaylist = _playlist;
}
}
Vector pI = restrictedPlaylist;
restrictedPlaylist = new Vector();
for (int a = 0; a < s.length; a++)
{
String currentS = s[a];
int size = list.getModel().getSize();
boolean[] remove = new boolean[size];
for (int i = 0; i < size; i++)
{
final int TITLE_SEARCH = 0;
final int ARTIST_SEARCH = 1;
final int ALBUM_SEARCH = 2;
final int FILENAME_SEARCH = 3;
TagInfo pli = ((PlaylistItem) pI.get(i)).getTagInfo();
remove[i] = false;
boolean found = false;
int searchType;
if (artist.isSelected())
{
searchType = ARTIST_SEARCH;
}
else if (album.isSelected())
{
searchType = ALBUM_SEARCH;
}
else if (title.isSelected())
{
searchType = TITLE_SEARCH;
}
else
{
searchType = -1;
}
for (int j = 0; j <= FILENAME_SEARCH; j++)
{
String listString = "";
if (pli == null)
{
if (searchType != -1)
{
break;
}
j = FILENAME_SEARCH;
}
else if (searchType != -1)
{
j = searchType;
}
switch (j)
{
case (TITLE_SEARCH):
if (pli.getTitle() != null) listString = pli.getTitle().toLowerCase();
break;
case (ARTIST_SEARCH):
if (pli.getArtist() != null) listString = pli.getArtist().toLowerCase();
break;
case (ALBUM_SEARCH):
if (pli.getAlbum() != null) listString = pli.getAlbum().toLowerCase();
break;
case (FILENAME_SEARCH):
String location = ((PlaylistItem) pI.get(i)).getLocation().toLowerCase();
listString = location.substring(location.lastIndexOf(sep) + 1, location.lastIndexOf("."));
break;
}
currentS = currentS.toLowerCase();
if (found = search(currentS, listString))
{
break;
}
if (searchType != -1)
{
break;
}
}
//if(found)foundAt[a] = i;
if (found && a == 0)
{
//todo new
newModel.addElement(getDisplayString((PlaylistItem) pI.get(i)));
restrictedPlaylist.add(pI.get(i));
}
if (!found && a != 0)
{
remove[i] = true;
}
}
//remove all unmatching items
for (int x = size - 1; x >= 0; x--)
{
if (remove[x])
{
newModel.remove(x);
restrictedPlaylist.remove(x);
}
}
pI = restrictedPlaylist;
list.setModel(newModel);
}
list.setModel(newModel);
lastSearch = searchField.getText();
}
if (list.getModel().getSize() > 0) list.setSelectedIndex(0);
}
/**
* Searches to see if a particular string exists within another string
*
* @param pattern The string to search for
* @param text The string in which to search for the pattern string
* @return True if the pattern string exists in the text string
*/
private boolean search(String pattern, String text)
{
int pStart = 0;
int tStart = 0;
char[] pChar = pattern.toCharArray();
char[] tChar = text.toCharArray();
while (pStart < pChar.length && tStart < tChar.length)
{
if (pChar[pStart] == tChar[tStart])
{
pStart++;
tStart++;
}
else
{
pStart = 0;
if (pChar[pStart] != tChar[tStart])
{
tStart++;
}
}
}
return pStart == pChar.length;
}
/**
* Calls the relavent methods in the player class to play a song.
*/
private void playSong()
{
Playlist playlist = player.getPlaylist();
player.pressStop();
player.setCurrentSong((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex()));
playlist.setCursor(playlist.getIndex((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex())));
player.pressStart();
dispose();
}
/**
* Class to handle keyboard presses.
*/
class KeyboardListener implements KeyListener
{
public void keyReleased(KeyEvent e)
{
if (e.getSource().equals(searchField))
{
if (e.getKeyCode() != KeyEvent.VK_DOWN && e.getKeyCode() != KeyEvent.VK_UP)
{
searchList(searchField.getText()); // Search for current search string
}
}
}
public void keyTyped(KeyEvent e)
{
if (list.getSelectedIndex() != -1)
{
if (e.getKeyChar() == KeyEvent.VK_ENTER)
{
playSong();
}
}
}
public void keyPressed(KeyEvent e)
{
int index = list.getSelectedIndex();
if (e.getKeyCode() == KeyEvent.VK_DOWN && index < list.getModel().getSize() - 1)
{
//list.setSelectedIndex(index+1);
JScrollBar vBar = scroll.getVerticalScrollBar();
vBar.setValue(vBar.getValue() + vBar.getUnitIncrement() * 5);
}
else if (e.getKeyCode() == KeyEvent.VK_UP && index >= 0)
{
JScrollBar vBar = scroll.getVerticalScrollBar();
vBar.setValue(vBar.getValue() - vBar.getUnitIncrement() * 5);
//list.setSelectedIndex(index-1);
}
}
}
/**
* Class to play a song if one is double-clicked on on the search list.
*/
class ClickListener extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() == 2 && list.getSelectedIndex() != -1)
{
playSong();
}
}
}
class RadioListener implements ChangeListener
{
public void stateChanged(ChangeEvent e)
{
searchList(searchField.getText());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -