Issue #2285 Fixed openFile in FileTreeView to attempt to refresh the tree if file not found.

Change-Id: Icce65c35a7a812e09af931dc451801f9caa383d5

Former-commit-id: 5bffdf61bb [formerly aee70a1a65] [formerly 5bffdf61bb [formerly aee70a1a65] [formerly 4392aec17a [formerly aae7d6af040d9a4f394d32782228878ce2092a07]]]
Former-commit-id: 4392aec17a
Former-commit-id: 938f8a92fe [formerly f941760133]
Former-commit-id: 0d72794455
This commit is contained in:
Max Schenkelberg 2013-09-17 17:02:17 -05:00
parent 945a1de7fd
commit 4059622cb7
4 changed files with 94 additions and 45 deletions

View file

@ -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;
}
}

View file

@ -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>
*
@ -47,7 +45,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTWizard;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Dec 16, 2010 mschenke Initial creation
* 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);
}
}

View file

@ -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;
@ -129,10 +129,11 @@ import com.raytheon.uf.viz.localization.service.ILocalizationService;
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 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 26, 2010 mnash Initial creation
* Feb 13, 2013 1610 mschenke Fixed null pointer by repopulating LocalizationFileGroupData
* objects even if they weren't expanded
* 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) {
LocalizationFileEntryData fileData = (LocalizationFileEntryData) item
.getData();
LocalizationPerspectiveUtils.openInEditor(page,
new LocalizationEditorInput(file, fileData.getResource()));
} else {
statusHandler.handle(Priority.PROBLEM, "Unable to find " + file
// 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()));
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);
}
}

View file

@ -62,4 +62,8 @@ public class LocalizationFileGroupData extends FileTreeEntryData {
public void addChildData(LocalizationFileEntryData data) {
childrenData.add(data);
}
public void clearChildData() {
childrenData.clear();
}
}