From: gmungoc Date: Mon, 22 May 2017 14:55:53 +0000 (+0100) Subject: Merge branch 'develop' into features/JAL-2446NCList X-Git-Tag: Release_2_10_3b1~251 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=2841011ed9f4fc86dbe06ae7ae9809b087cd2cce;p=jalview.git Merge branch 'develop' into features/JAL-2446NCList Conflicts: src/jalview/gui/FeatureRenderer.java --- 2841011ed9f4fc86dbe06ae7ae9809b087cd2cce diff --cc src/jalview/gui/FeatureRenderer.java index 0779760,55c4323..c0e3e73 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@@ -387,15 -386,16 +387,19 @@@ public class FeatureRenderer extend FeaturesFile ffile = new FeaturesFile(); - if (reply == JvOptionPane.OK_OPTION && name.getText().length() > 0) - String enteredType = name.getText().trim(); ++ final String enteredType = name.getText().trim(); ++ final String enteredGroup = group.getText().trim(); ++ final String enteredDescription = description.getText().replaceAll("\n", " "); ++ + if (reply == JvOptionPane.OK_OPTION && enteredType.length() > 0) { /* * update default values only if creating using default values */ if (useLastDefaults) { - lastFeatureAdded = name.getText().trim(); - lastFeatureGroupAdded = group.getText().trim(); + lastFeatureAdded = enteredType; - lastFeatureGroupAdded = group.getText().trim(); ++ lastFeatureGroupAdded = enteredGroup; // TODO: determine if the null feature group is valid if (lastFeatureGroupAdded.length() < 1) { @@@ -421,52 -421,26 +425,50 @@@ { /* * YES_OPTION corresponds to the Amend button -- * need to refresh Feature Settings if type, group or colour changed ++ * need to refresh Feature Settings if type, group or colour changed; ++ * note we don't force the feature to be visible - the user has been ++ * warned if a hidden feature type or group was entered */ - String newType = name.getText().trim(); - String newFeatureGroup = group.getText().trim(); - String newDescription = description.getText().replaceAll("\n", " "); - boolean refreshSettings = (!featureType.equals(sf.type) || !featureGroup - .equals(sf.featureGroup)); - sf.type = enteredType; - sf.featureGroup = group.getText().trim(); - sf.description = description.getText().replaceAll("\n", " "); - boolean refreshSettings = (!featureType.equals(sf.type) || !featureGroup - .equals(sf.featureGroup)); ++ boolean refreshSettings = (!featureType.equals(enteredType) || !featureGroup ++ .equals(enteredGroup)); refreshSettings |= (fcol != oldcol); - setColour(newType, fcol); - /*?*/ getFeaturesDisplayed().setVisible(newType); - - setColour(sf.type, fcol); - ++ setColour(enteredType, fcol); + int newBegin = sf.begin; + int newEnd = sf.end; try { - sf.begin = ((Integer) start.getValue()).intValue(); - sf.end = ((Integer) end.getValue()).intValue(); + newBegin = ((Integer) start.getValue()).intValue(); + newEnd = ((Integer) end.getValue()).intValue(); } catch (NumberFormatException ex) { + // JSpinner doesn't accept invalid format data :-) + } + + /* + * replace the feature by deleting it and adding a new one + * (to ensure integrity of SequenceFeatures data store) + */ + sequences.get(0).deleteFeature(sf); - SequenceFeature newSf = new SequenceFeature(newType, - newDescription, newBegin, newEnd, sf.getScore(), - newFeatureGroup); ++ SequenceFeature newSf = new SequenceFeature(enteredType, ++ enteredDescription, newBegin, newEnd, sf.getScore(), ++ enteredGroup); + // ensure any additional properties are copied + if (sf.otherDetails != null) + { + newSf.otherDetails = new HashMap(sf.otherDetails); + } + ffile.parseDescriptionHTML(newSf, false); + // add any additional links not parsed from description + if (sf.links != null) + { + for (String link : sf.links) + { + newSf.addLink(link); + } } + // amend features only gets one sequence to act on + sequences.get(0).addSequenceFeature(newSf); - ffile.parseDescriptionHTML(sf, false); if (refreshSettings) { featuresAdded(); @@@ -481,15 -455,15 +483,14 @@@ for (int i = 0; i < sequences.size(); i++) { SequenceFeature sf = features.get(i); - sf.type = name.getText().trim(); - // fix for JAL-1538 - always set feature group here - sf.featureGroup = group.getText().trim(); - sf.description = description.getText().replaceAll("\n", " "); - sequences.get(i).addSequenceFeature(sf); - ffile.parseDescriptionHTML(sf, false); - sf.type = enteredType; - // fix for JAL-1538 - always set feature group here - sf.featureGroup = group.getText().trim(); - sf.description = description.getText().replaceAll("\n", " "); - sequences.get(i).addSequenceFeature(sf); - ffile.parseDescriptionHTML(sf, false); ++ SequenceFeature sf2 = new SequenceFeature(enteredType, ++ enteredDescription, sf.getBegin(), sf.getEnd(), ++ Float.NaN, enteredGroup); ++ sequences.get(i).addSequenceFeature(sf2); ++ ffile.parseDescriptionHTML(sf2, false); } - setColour(lastFeatureAdded, fcol); + setColour(enteredType, fcol); featuresAdded();