Issue #2285 Fixed openFile in FileTreeView to attempt to refresh the tree if file not found.
Change-Id: Icce65c35a7a812e09af931dc451801f9caa383d5 Former-commit-id:aee70a1a65
[formerlyaee70a1a65
[formerly aae7d6af040d9a4f394d32782228878ce2092a07]] Former-commit-id:4392aec17a
Former-commit-id:f941760133
This commit is contained in:
parent
6246cb04af
commit
0d72794455
4 changed files with 94 additions and 45 deletions
|
@ -41,18 +41,16 @@ import org.eclipse.swt.widgets.TableColumn;
|
|||
import org.eclipse.swt.widgets.TableItem;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
import com.raytheon.uf.common.serialization.SerializationUtil;
|
||||
import com.raytheon.uf.common.serialization.JAXBManager;
|
||||
import com.raytheon.uf.common.serialization.adapters.UnitAdapter;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivParamConstantField;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivParamDesc;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivParamField;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivParamMethod;
|
||||
import com.raytheon.uf.viz.derivparam.library.IDerivParamField;
|
||||
import com.raytheon.uf.viz.derivparam.ui.Activator;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTWizardPage;
|
||||
|
||||
|
@ -74,7 +72,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTWizardPage;
|
|||
*/
|
||||
|
||||
public class DerivedParamNewDefinitionPage extends CaveSWTWizardPage {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(DerivedParamNewDefinitionPage.class);
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(DerivedParamNewDefinitionPage.class);
|
||||
|
||||
/* SWT Widgets */
|
||||
private Text nameText;
|
||||
|
@ -125,10 +124,10 @@ public class DerivedParamNewDefinitionPage extends CaveSWTWizardPage {
|
|||
desc.addMethod((DerivParamMethod) ti.getData());
|
||||
}
|
||||
try {
|
||||
return SerializationUtil.marshalToXml(desc);
|
||||
return new JAXBManager(DerivParamDesc.class).marshalToXml(desc);
|
||||
} catch (JAXBException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
|
||||
e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,15 +31,13 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
|
|||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.util.FileUtil;
|
||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivedParameterGenerator;
|
||||
import com.raytheon.uf.viz.derivparam.ui.Activator;
|
||||
import com.raytheon.uf.viz.localization.LocalizationPerspectiveUtils;
|
||||
import com.raytheon.uf.viz.localization.service.ILocalizationService;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTWizard;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Wizard for generating derived paramters
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -48,6 +46,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTWizard;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 16, 2010 mschenke Initial creation
|
||||
* Sep 17, 2013 2285 mschenke Fixed serialization of DerivParamDesc
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -56,7 +55,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTWizard;
|
|||
*/
|
||||
|
||||
public class DerivedParamWizard extends CaveSWTWizard {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(DerivedParamWizard.class);
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(DerivedParamWizard.class);
|
||||
|
||||
private DerivedParamNewDefinitionPage newDefinitionPage;
|
||||
|
||||
|
@ -113,15 +113,15 @@ public class DerivedParamWizard extends CaveSWTWizard {
|
|||
file.save();
|
||||
functionFile = file;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
String definitionContents = newDefinitionPage.createDefinition();
|
||||
if (definitionContents != null) {
|
||||
String fileName = newDefinitionPage.getAbbreviation() + ".xml";
|
||||
String path = DerivedParameterGenerator.XML_DIR + File.separator
|
||||
+ fileName;
|
||||
String path = DerivedParameterGenerator.XML_DIR
|
||||
+ IPathManager.SEPARATOR + fileName;
|
||||
LocalizationFile file = pm.getLocalizationFile(userCtx, path);
|
||||
File f = file.getFile();
|
||||
if (f.exists()) {
|
||||
|
@ -132,8 +132,8 @@ public class DerivedParamWizard extends CaveSWTWizard {
|
|||
file.save();
|
||||
definitionFile = file;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -93,13 +93,13 @@ import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel
|
|||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
|
||||
import com.raytheon.uf.common.localization.LocalizationFile;
|
||||
import com.raytheon.uf.common.localization.LocalizationNotificationObserver;
|
||||
import com.raytheon.uf.common.localization.LocalizationUtil;
|
||||
import com.raytheon.uf.common.localization.PathManagerFactory;
|
||||
import com.raytheon.uf.common.localization.exception.LocalizationOpFailedException;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.viz.core.VizApp;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.localization.LocalizationManager;
|
||||
import com.raytheon.uf.viz.localization.LocalizationEditorInput;
|
||||
import com.raytheon.uf.viz.localization.LocalizationPerspectiveUtils;
|
||||
|
@ -132,7 +132,8 @@ import com.raytheon.uf.viz.localization.service.ILocalizationService;
|
|||
* May 26, 2010 mnash Initial creation
|
||||
* Feb 13, 2013 1610 mschenke Fixed null pointer by repopulating LocalizationFileGroupData
|
||||
* objects even if they weren't expanded
|
||||
* May 1st, 2013 1967 njensen Fix for pydev 2.7
|
||||
* May 1, 2013 1967 njensen Fix for pydev 2.7
|
||||
* Sep 17, 2013 2285 mschenke Made openFile refresh items if file not found
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -838,22 +839,13 @@ public class FileTreeView extends ViewPart implements IPartListener2,
|
|||
if (data instanceof LocalizationFileEntryData) {
|
||||
toDelete.add(((LocalizationFileEntryData) data)
|
||||
.getFile());
|
||||
} else if (data.isDirectory()) {
|
||||
String[] parts = LocalizationUtil.splitUnique(data
|
||||
.getPath());
|
||||
String parentDir = parts[0];
|
||||
for (int i = 1; i < parts.length - 1; ++i) {
|
||||
parentDir += IPathManager.SEPARATOR + parts[i];
|
||||
} else if (data instanceof LocalizationFileGroupData) {
|
||||
for (LocalizationFileEntryData child : ((LocalizationFileGroupData) data)
|
||||
.getChildrenData()) {
|
||||
toDelete.add(child.getFile());
|
||||
}
|
||||
LocalizationFile[] files = PathManagerFactory
|
||||
.getPathManager()
|
||||
.listFiles(
|
||||
getTreeSearchContexts(data
|
||||
.getPathData().getType()),
|
||||
data.getPath(),
|
||||
new String[] { parts[parts.length - 1] },
|
||||
false, false);
|
||||
toDelete.addAll(Arrays.asList(files));
|
||||
} else if (data.isDirectory()) {
|
||||
toDelete.addAll(buildFileList(item, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -866,6 +858,7 @@ public class FileTreeView extends ViewPart implements IPartListener2,
|
|||
}
|
||||
|
||||
if (toDelete.size() > 0) {
|
||||
Collections.sort(toDelete, new FileTreeFileComparator());
|
||||
mgr.add(new DeleteAction(getSite().getPage(), toDelete
|
||||
.toArray(new LocalizationFile[toDelete.size()])));
|
||||
mgr.add(new Separator());
|
||||
|
@ -927,6 +920,39 @@ public class FileTreeView extends ViewPart implements IPartListener2,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a list of {@link LocalizationFile}s starting at the item passed in
|
||||
*
|
||||
* @param item
|
||||
* @param files
|
||||
* (option) list to add entries to
|
||||
* @return list of files
|
||||
*/
|
||||
private List<LocalizationFile> buildFileList(TreeItem item,
|
||||
List<LocalizationFile> files) {
|
||||
if (files == null) {
|
||||
files = new ArrayList<LocalizationFile>();
|
||||
}
|
||||
|
||||
FileTreeEntryData data = (FileTreeEntryData) item.getData();
|
||||
if (data instanceof LocalizationFileEntryData) {
|
||||
// single item
|
||||
files.add(((LocalizationFileEntryData) data).getFile());
|
||||
} else if (data instanceof LocalizationFileGroupData) {
|
||||
for (LocalizationFileEntryData child : ((LocalizationFileGroupData) data)
|
||||
.getChildrenData()) {
|
||||
files.add(child.getFile());
|
||||
}
|
||||
} else if (data.isDirectory()) {
|
||||
// recursive part, ensure item populated
|
||||
populateNode(item);
|
||||
for (TreeItem childItem : item.getItems()) {
|
||||
buildFileList(childItem, files);
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh the selected tree items
|
||||
*/
|
||||
|
@ -1134,6 +1160,7 @@ public class FileTreeView extends ViewPart implements IPartListener2,
|
|||
parentItem.removeAll();
|
||||
LocalizationFileGroupData fData = (LocalizationFileGroupData) parentItem
|
||||
.getData();
|
||||
fData.clearChildData();
|
||||
fData.setRequestedChildren(true);
|
||||
PathData pd = fData.getPathData();
|
||||
for (LocalizationFile file : files) {
|
||||
|
@ -1663,16 +1690,35 @@ public class FileTreeView extends ViewPart implements IPartListener2,
|
|||
*/
|
||||
@Override
|
||||
public void openFile(LocalizationFile file) {
|
||||
boolean fileOpened = false;
|
||||
IWorkbenchPage page = this.getSite().getPage();
|
||||
TreeItem item = find(file, true, false);
|
||||
// Attempt to find file, populating tree as you search and returning the
|
||||
// nearest parent item
|
||||
TreeItem item = find(file, true, true);
|
||||
if (item != null) {
|
||||
// An item was found, if it is not an entry for this file, refresh
|
||||
// the item and search again
|
||||
FileTreeEntryData data = (FileTreeEntryData) item.getData();
|
||||
if (data instanceof LocalizationFileEntryData == false) {
|
||||
refresh(item);
|
||||
item = find(file, true, true);
|
||||
}
|
||||
// Check for entry for this file in item, if is entry, open file
|
||||
if (item.getData() instanceof LocalizationFileEntryData) {
|
||||
LocalizationFileEntryData fileData = (LocalizationFileEntryData) item
|
||||
.getData();
|
||||
LocalizationPerspectiveUtils.openInEditor(page,
|
||||
new LocalizationEditorInput(file, fileData.getResource()));
|
||||
} else {
|
||||
statusHandler.handle(Priority.PROBLEM, "Unable to find " + file
|
||||
LocalizationPerspectiveUtils.openInEditor(
|
||||
page,
|
||||
new LocalizationEditorInput(file, fileData
|
||||
.getResource()));
|
||||
fileOpened = true;
|
||||
}
|
||||
}
|
||||
if (!fileOpened) {
|
||||
// File was not opened, send status
|
||||
VizException e = new VizException("Unable to find " + file
|
||||
+ " in view to open");
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -62,4 +62,8 @@ public class LocalizationFileGroupData extends FileTreeEntryData {
|
|||
public void addChildData(LocalizationFileEntryData data) {
|
||||
childrenData.add(data);
|
||||
}
|
||||
|
||||
public void clearChildData() {
|
||||
childrenData.clear();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue