use of org.eclipse.ui.part.FileEditorInput in project translationstudio8 by heartsome.
the class HtmlBrowserEditor method init.
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
setPartName(input.getName());
Image oldTitleImage = titleImage;
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
titleImage = imageDesc != null ? imageDesc.createImage() : null;
}
setTitleImage(titleImage);
if (oldTitleImage != null && !oldTitleImage.isDisposed()) {
oldTitleImage.dispose();
}
FileEditorInput fileInput = (FileEditorInput) input;
htmlUrl = fileInput.getFile().getLocation().toOSString();
}
use of org.eclipse.ui.part.FileEditorInput in project translationstudio8 by heartsome.
the class XLIFFEditorImplWithNatTable method init.
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(Messages.getString("editor.XLIFFEditorImplWithNatTable.logger1"));
}
setSite(site);
setInput(input);
List<File> files = null;
if (input instanceof FileStoreEditorInput) {
FileStoreEditorInput editorInput = (FileStoreEditorInput) input;
files = Arrays.asList(new File(editorInput.getURI()));
setPartName(input.getName());
} else if (input instanceof FileEditorInput) {
FileEditorInput editorInput = (FileEditorInput) input;
try {
files = getFilesByFileEditorInput(editorInput);
} catch (CoreException e) {
throw new PartInitException(e.getMessage(), e);
}
if (files != null) {
if (files instanceof ArrayList<?>) {
// “打开项目”的情况,会返回 java.util.ArrayList<?> 对象。
if (files.size() <= 0) {
// 关闭此编辑器。
close();
return;
}
// 设置Editor标题栏的显示名称,否则名称用plugin.xml中的name属性
StringBuffer nameSB = new StringBuffer();
for (File file : files) {
nameSB.append(file.getName() + "、");
}
nameSB.deleteCharAt(nameSB.length() - 1);
String partName = "";
if (nameSB.length() > 17) {
partName = nameSB.substring(0, 17) + "...";
} else {
partName = nameSB.toString();
}
setPartName(partName);
titleToolTip = nameSB.toString();
multiFile = true;
multiFileList = files;
} else {
// 打开文件的一般情况
setPartName(input.getName());
String name = input.getName().toLowerCase();
if (!CommonFunction.validXlfExtensionByFileName(name)) {
// IFile file = (IFile) input.getAdapter(IFile.class);
// 打开正转换对话框
// ConverterCommandTrigger.openConversionDialog(site.getWorkbenchWindow(), file);
// 关闭此编辑器。
close();
return;
}
}
}
}
// if (files == null || !XLFValidator.validateXlifFiles(files)) {
// close(); // 关闭此编辑器。
// return;
// }
openFile(files, input);
}
use of org.eclipse.ui.part.FileEditorInput in project translationstudio8 by heartsome.
the class RenameResourceAndCloseEditorAction method closeRelatedEditors.
/**
* 重命名文件时,如果文件在编辑器中已打开,则关闭此文件。 ;
*/
private void closeRelatedEditors() {
IWorkbenchPage page = null;
for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
if (window != null) {
page = window.getActivePage();
break;
}
}
if (page == null) {
return;
}
IEditorReference[] editorReferences = page.getEditorReferences();
List<IResource> selectionResource = getSelectedResources();
final List<IEditorReference> lstCloseEditor = new ArrayList<IEditorReference>();
VTDGen vg = new VTDGen();
AutoPilot ap = new AutoPilot();
for (IEditorReference reference : editorReferences) {
IFile file = ((FileEditorInput) reference.getEditor(true).getEditorInput()).getFile();
if ("xlp".equals(file.getFileExtension())) {
if (vg.parseFile(file.getLocation().toOSString(), true)) {
VTDNav vn = vg.getNav();
ap.bind(vn);
try {
ap.selectXPath("/mergerFiles/mergerFile/@filePath");
int index = -1;
merge: while ((index = ap.evalXPath()) != -1) {
String fileLC = vn.toString(index + 1);
if (fileLC != null && !"".equals(fileLC)) {
for (IResource resource : selectionResource) {
if (resource instanceof IProject || resource instanceof IFolder) {
if (fileLC.startsWith(resource.getLocation().toOSString() + File.separator)) {
lstCloseEditor.add(reference);
break merge;
}
} else if (resource instanceof IFile) {
if (resource.getLocation().toOSString().equals(fileLC)) {
lstCloseEditor.add(reference);
break merge;
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
for (IResource resource : selectionResource) {
if (resource instanceof IProject) {
if (resource.getLocation().toOSString().equals(file.getProject().getLocation().toOSString())) {
lstCloseEditor.add(reference);
break;
}
} else if (resource instanceof IFolder) {
if (file.getLocation().toOSString().startsWith(resource.getLocation().toOSString() + File.separator)) {
lstCloseEditor.add(reference);
break;
}
} else if (resource instanceof IFile) {
if (resource.getLocation().toOSString().equals(file.getLocation().toOSString())) {
lstCloseEditor.add(reference);
break;
}
}
}
}
}
final IWorkbenchPage page2 = page;
Display.getDefault().asyncExec(new Runnable() {
public void run() {
IEditorReference[] arrEditorReference = new IEditorReference[lstCloseEditor.size()];
page2.closeEditors(lstCloseEditor.toArray(arrEditorReference), false);
}
});
}
use of org.eclipse.ui.part.FileEditorInput in project translationstudio8 by heartsome.
the class ExportAsTextHandler method execute.
public Object execute(ExecutionEvent event) throws ExecutionException {
String elementName = event.getParameter("elementName");
IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
Shell shell = activeEditor.getEditorSite().getShell();
if (activeEditor == null || !(activeEditor instanceof XLIFFEditorImplWithNatTable)) {
return null;
}
XLIFFEditorImplWithNatTable xliffEditor = (XLIFFEditorImplWithNatTable) activeEditor;
if (xliffEditor.isMultiFile()) {
MessageDialog.openInformation(shell, "", "当前编辑器打开了多个文件,无法执行该操作。");
}
IEditorInput input = xliffEditor.getEditorInput();
URI uri = null;
if (input instanceof FileEditorInput) {
uri = ((FileEditorInput) input).getURI();
} else if (input instanceof FileStoreEditorInput) {
uri = ((FileStoreEditorInput) input).getURI();
} else {
return null;
}
File xliff = new File(uri);
FileDialog fd = new FileDialog(shell, SWT.SAVE);
String[] names = { "Plain Text Files [*.txt]", "All Files [*.*]" };
//$NON-NLS-1$ //$NON-NLS-2$
String[] extensions = { "*.txt", "*.*" };
fd.setFilterExtensions(extensions);
fd.setFilterNames(names);
//$NON-NLS-1$
fd.setFileName(xliff.getName() + ".txt");
String out = fd.open();
if (out == null) {
return null;
}
XLFHandler handler = xliffEditor.getXLFHandler();
boolean result = handler.saveAsText(xliff.getAbsolutePath(), out, elementName);
if (result) {
IWorkbenchPage page = xliffEditor.getEditorSite().getPage();
OpenEditorUtil.OpenFileWithSystemEditor(page, out);
} else {
MessageDialog.openInformation(shell, "", "文件 “" + out + "” 保存失败!请重试。");
}
return null;
}
use of org.eclipse.ui.part.FileEditorInput in project translationstudio8 by heartsome.
the class SetSplitPointByWordNumHandler method execute.
public Object execute(ExecutionEvent event) throws ExecutionException {
final String navegatorID = "net.heartsome.cat.common.ui.navigator.view";
final String XLIFF_EDITOR_ID = "net.heartsome.cat.ts.ui.xliffeditor.nattable.editor";
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
final Shell shell = window.getShell();
IFile selectFile = null;
XLIFFEditorImplWithNatTable xliffEditor = null;
IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
// 如果是导航视图,那么就获取导航视图中选中的文件
if (activePart instanceof IViewPart) {
if (navegatorID.equals(activePart.getSite().getId())) {
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(navegatorID);
ISelection currentSelection = (StructuredSelection) viewPart.getSite().getSelectionProvider().getSelection();
if (currentSelection != null && !currentSelection.isEmpty() && currentSelection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) currentSelection;
Object object = structuredSelection.getFirstElement();
if (object instanceof IFile) {
selectFile = (IFile) object;
String fileExtension = selectFile.getFileExtension();
// 如果后缀名不是xlf,那么就退出操作
if (fileExtension == null || !CommonFunction.validXlfExtension(fileExtension)) {
MessageDialog.openInformation(shell, Messages.getString("handler.SplitXliffHandler.msgTitle"), Messages.getString("handler.SplitXliffHandler.msg1"));
return null;
}
FileEditorInput fileInput = new FileEditorInput(selectFile);
IEditorReference[] editorRefer = window.getActivePage().findEditors(fileInput, XLIFF_EDITOR_ID, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
IEditorPart editorPart = null;
if (editorRefer.length >= 1) {
editorPart = editorRefer[0].getEditor(true);
xliffEditor = (XLIFFEditorImplWithNatTable) editorPart;
if (window.getActivePage().getActiveEditor() != editorPart) {
window.getActivePage().activate(editorPart);
}
} else {
try {
xliffEditor = (XLIFFEditorImplWithNatTable) window.getActivePage().openEditor(fileInput, XLIFF_EDITOR_ID, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
} catch (PartInitException e) {
LOGGER.error("", e);
e.printStackTrace();
}
}
} else {
MessageDialog.openInformation(shell, Messages.getString("all.dialog.info"), Messages.getString("SetSplitPointHandler.cantSetPointToNotXlf"));
return null;
}
}
}
} else if (activePart instanceof IEditorPart) {
if (XLIFF_EDITOR_ID.equals(activePart.getSite().getId())) {
xliffEditor = (XLIFFEditorImplWithNatTable) activePart;
if (xliffEditor.isMultiFile()) {
MessageDialog.openInformation(shell, Messages.getString("all.dialog.info"), Messages.getString("SetSplitPointByWOrdNumHandler.cantSetForMulty"));
return null;
}
selectFile = ((FileEditorInput) xliffEditor.getEditorInput()).getFile();
}
}
if (selectFile == null) {
return null;
}
XLIFFEditorImplWithNatTable nattable = XLIFFEditorImplWithNatTable.getCurrent();
final XLFHandler xlfHander = nattable.getXLFHandler();
Map<String, Integer> rowWordNumMap = xlfHander.getSplitFileInfoForPointSetting(selectFile.getLocation().toOSString());
if (rowWordNumMap.size() <= 1) {
MessageDialog.openInformation(shell, Messages.getString("all.dialog.info"), Messages.getString("SetSplitPointHandler.cantSetPointForTuNum"));
return null;
}
List<String> splitPointList = nattable.getSplitXliffPoints();
// 排序之前先过滤重复
HashSet<String> set = new HashSet<String>(splitPointList);
splitPointList.clear();
splitPointList.addAll(set);
// 先对 splitPointList 进行排序
Collections.sort(splitPointList, new Comparator<String>() {
public int compare(String rowId1, String rowId2) {
int rowIndex1 = xlfHander.getRowIndex(rowId1);
int rowIndex2 = xlfHander.getRowIndex(rowId2);
return rowIndex1 > rowIndex2 ? 1 : -1;
}
});
List<SegPointBean> segPointList = new ArrayList<SegPointBean>();
if (splitPointList.size() > 0) {
int segWordNum = 0;
int i = 0;
String pointRowId = splitPointList.get(i);
for (Entry<String, Integer> entry : rowWordNumMap.entrySet()) {
segWordNum += entry.getValue();
if (pointRowId.equals(entry.getKey())) {
segPointList.add(new SegPointBean(segWordNum));
segWordNum = 0;
i++;
if (i < splitPointList.size()) {
pointRowId = splitPointList.get(i);
}
}
}
if (splitPointList.size() + 1 > segPointList.size()) {
segPointList.add(new SegPointBean(segWordNum));
}
}
SetSplitPointByWordNumDialog dialog = new SetSplitPointByWordNumDialog(shell, xlfHander, selectFile.getLocation().toOSString(), rowWordNumMap, segPointList);
int openResult = dialog.open();
if (openResult == IDialogConstants.OK_ID) {
// 如果选择确定,那么在界面上生成分割点
nattable.getSplitXliffPoints().clear();
for (SegPointBean bean : segPointList) {
if (bean.getRowId() != null && !bean.getRowId().isEmpty()) {
nattable.getSplitXliffPoints().add(bean.getRowId());
}
}
nattable.refresh();
}
return null;
}
Aggregations