📄 modelinitializer.java
字号:
/*******************************************************************************
* Copyright (c) 2007 Siemens AG
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Kai T鰀ter - initial API and implementation
*******************************************************************************/
package com.siemens.ct.mp3m;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.ui.PlatformUI;
import com.siemens.ct.mp3m.model.MP3Infos;
import com.siemens.ct.mp3m.model.physical.Mp3Directory;
import com.siemens.ct.mp3m.model.physical.Mp3File;
import com.siemens.ct.mp3m.model.physical.MusicFolders;
import com.siemens.ct.mp3m.utilities.LogUtil;
public class ModelInitializer {
/**
* Set up a file based model for mp3s
*/
public static Mp3Directory createTree() {
final Mp3Directory root = MusicFolders.getRoot();
root.removeMp3Files();
IRunnableWithProgress runnable = new IRunnableWithProgress() {
public void run(IProgressMonitor progressMonitor) throws InterruptedException {
List<String> musicFolders = MusicFolders.getMusicFolders();
List<String> cancelledList = new ArrayList<String>();
progressMonitor.beginTask(Messages.getString("ModelInitializer.Scanning"), musicFolders.size()); //$NON-NLS-1$
for (String folder : musicFolders) {
if(!root.isIncluded(folder)) {
Mp3Directory p1 = new Mp3Directory(folder);
File file = new File(folder);
search(file, p1, progressMonitor);
p1.setContentsInitialized(true);
if(!progressMonitor.isCanceled()) {
root.addMp3File(p1);
} else {
cancelledList.add(folder);
progressMonitor.setCanceled(false);
}
}
progressMonitor.worked(1);
}
progressMonitor.done();
for(String cancelled: cancelledList) {
MusicFolders.removeMusicFolder(cancelled);
}
}
};
try {
PlatformUI.getWorkbench().getProgressService().busyCursorWhile(runnable);
} catch (InvocationTargetException e) {
LogUtil.logError(Mp3mPlugin.getDefault().getBundle().getSymbolicName(),e);
} catch (InterruptedException e) {
LogUtil.logError(Mp3mPlugin.getDefault().getBundle().getSymbolicName(),e);
}
root.setContentsInitialized(true);
MusicFolders.notifyChangeListeners();
return root;
}
private static void search(File directory, Mp3Directory parent, IProgressMonitor progressMonitor) {
if (progressMonitor.isCanceled()) {
return;
}
String[] files = directory.list();
progressMonitor.subTask(Messages.getString("ModelInitializer.Searching") + directory.getAbsolutePath()); //$NON-NLS-1$
if(files != null) {
for (String file : files) {
String fullPath = directory.getAbsolutePath() + File.separator + file; //$NON-NLS-1$
File testFile = new File(fullPath);
if (testFile.isDirectory()) {
Mp3Directory dir = new Mp3Directory(file);
parent.addMp3File(dir);
search(testFile, dir, progressMonitor);
dir.setContentsInitialized(true);
} else if (file.endsWith(".mp3")) { //$NON-NLS-1$
Mp3File mp3 = new Mp3File(file);
mp3.setFullPath(fullPath);
parent.addMp3File(mp3);
MP3Infos.addMP3File(fullPath);
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -