Search in sources :

Example 6 with ProjectResource

use of net.heartsome.cat.ts.importproject.widgiet.ProjectResource in project translationstudio8 by heartsome.

the class ImportProjectWizardPage2 method createProjectImpl.

private void createProjectImpl(ProjectResource projRoot, IProject newProject) throws Exception {
    try {
        for (Object obj : selectContentProvider.getChildren(projRoot)) {
            if (obj instanceof ProjectResource) {
                ProjectResource proResource = (ProjectResource) obj;
                // 如果没有选中,那么不进行导入操作
                if (!selectElementTree.getChecked(proResource)) {
                    continue;
                }
                if (proResource.isFolder()) {
                    // 如果是文件夹,则创建
                    IFolder childFolder = newProject.getFolder(proResource.getLabel());
                    if (!childFolder.exists()) {
                        childFolder.create(true, true, null);
                    }
                    createCurProjectResource(proResource, childFolder);
                } else {
                    // 如果是文件,则判断是否需要覆盖,若是,则直接覆盖
                    if (proResource.isNeedCover()) {
                        IFile iFile = newProject.getFile(proResource.getLabel());
                        InputStream inputStream = proResource.getInputStream();
                        if (inputStream != null) {
                            if (iFile.exists()) {
                                closeOpenedFile(iFile);
                                iFile.delete(true, null);
                            }
                            iFile.create(inputStream, true, null);
                        }
                    }
                }
            }
        }
    } catch (Exception e) {
        //disposeImg();
        LOGGER.error(Messages.getString("importProjectWizardPage.LOGG.importEroor"), e);
        throw e;
    }
}
Also used : IFile(org.eclipse.core.resources.IFile) InputStream(java.io.InputStream) ProjectResource(net.heartsome.cat.ts.importproject.widgiet.ProjectResource) CoreException(org.eclipse.core.runtime.CoreException) ZipException(java.util.zip.ZipException) InvocationTargetException(java.lang.reflect.InvocationTargetException) TarException(org.eclipse.ui.internal.wizards.datatransfer.TarException) IOException(java.io.IOException) IFolder(org.eclipse.core.resources.IFolder)

Example 7 with ProjectResource

use of net.heartsome.cat.ts.importproject.widgiet.ProjectResource in project translationstudio8 by heartsome.

the class ImportProjectWizardPage2 method checkRepeatTreeChildCover.

/**
	 * 重复树点击事件触发的方法,该方法主要是实现用户针对重复文件的覆盖选择操作
	 * @param event
	 */
private void checkRepeatTreeChildCover(ProjectResource parentElemnt) {
    Object[] childArray = repeateContentProvider.getChildren(parentElemnt);
    if (childArray == null || childArray.length <= 0) {
        return;
    }
    for (Object childObj : childArray) {
        if (childObj instanceof ProjectResource) {
            ProjectResource proResourceChild = (ProjectResource) childObj;
            proResourceChild.setNeedCover(repeatElementTree.getChecked(proResourceChild));
            checkRepeatTreeChildCover(proResourceChild);
        }
    }
}
Also used : ProjectResource(net.heartsome.cat.ts.importproject.widgiet.ProjectResource)

Example 8 with ProjectResource

use of net.heartsome.cat.ts.importproject.widgiet.ProjectResource in project translationstudio8 by heartsome.

the class ImportProjectWizardPage2 method getRepeateProResourceInput.

/**
	 * 获取右边树(重复项目资源)的输入内容,即获取重复的项目资源
	 * @return
	 */
private ProjectResource[] getRepeateProResourceInput() {
    List<ProjectResource> proResourceList = new ArrayList<ProjectResource>();
    for (ProjectResource proResource : rootProjectArray) {
        String projectName = proResource.getProjectName();
        if (checkedRepeatElementMap.containsKey(projectName)) {
            proResourceList.add(proResource);
        }
    }
    ProjectResource[] root = (ProjectResource[]) proResourceList.toArray(new ProjectResource[proResourceList.size()]);
    repeatElementTree.setRoot(root);
    return root;
}
Also used : ArrayList(java.util.ArrayList) ProjectResource(net.heartsome.cat.ts.importproject.widgiet.ProjectResource)

Example 9 with ProjectResource

use of net.heartsome.cat.ts.importproject.widgiet.ProjectResource in project translationstudio8 by heartsome.

the class ImportProjectWizardPage2 method initTreeListener.

/**
	 * 初始化两颗树的事件
	 */
private void initTreeListener() {
    selectElementTree.addCheckStateListener(new ICheckStateListener() {

        public void checkStateChanged(final CheckStateChangedEvent event) {
            BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {

                public void run() {
                    selectElementTreeCheckFunction(event);
                    setNotCoverForNotcheckOfSelectTree();
                    setPageCompleteState(OTHER_TYPE);
                }
            });
        }
    });
    repeatElementTree.addCheckStateListener(new ICheckStateListener() {

        public void checkStateChanged(final CheckStateChangedEvent event) {
            BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {

                public void run() {
                    Object element = event.getElement();
                    if (element instanceof ProjectResource) {
                        ProjectResource proResourceElement = (ProjectResource) element;
                        if (repeatElementTree.getChecked(proResourceElement)) {
                            proResourceElement.setNeedCover(true);
                        } else {
                            proResourceElement.setNeedCover(false);
                        }
                        // 处理所有的子文件或文件夹,以保存证他们都处于要覆盖状态
                        checkRepeatTreeChildCover(proResourceElement);
                        // 处理当前节点的所有父节点
                        ProjectResource parentProRes = proResourceElement.getParent();
                        while (parentProRes != null) {
                            parentProRes.setNeedCover(repeatElementTree.getChecked(parentProRes));
                            parentProRes = parentProRes.getParent();
                        }
                        repeatElementTree.refresh(true);
                    }
                    setPageCompleteState(OTHER_TYPE);
                }
            });
        }
    });
}
Also used : ICheckStateListener(org.eclipse.jface.viewers.ICheckStateListener) ProjectResource(net.heartsome.cat.ts.importproject.widgiet.ProjectResource) CheckStateChangedEvent(org.eclipse.jface.viewers.CheckStateChangedEvent)

Aggregations

ProjectResource (net.heartsome.cat.ts.importproject.widgiet.ProjectResource)9 IFile (org.eclipse.core.resources.IFile)3 IOException (java.io.IOException)2 InputStream (java.io.InputStream)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 ZipException (java.util.zip.ZipException)2 IFolder (org.eclipse.core.resources.IFolder)2 CoreException (org.eclipse.core.runtime.CoreException)2 TarException (org.eclipse.ui.internal.wizards.datatransfer.TarException)2 ProjectConfigerUtil (net.heartsome.cat.ts.core.file.ProjectConfigerUtil)1 IProject (org.eclipse.core.resources.IProject)1 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)1 CheckStateChangedEvent (org.eclipse.jface.viewers.CheckStateChangedEvent)1 ICheckStateListener (org.eclipse.jface.viewers.ICheckStateListener)1