⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modelinitializer.java

📁 eclise rcp 项目,是非常好的学习源码
💻 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 + -