Fixed AS3 - Select the trait after adding new

Fixed #1955 AS3 - Exception during removing trait
This commit is contained in:
Jindra Petřík
2023-01-30 22:33:36 +01:00
parent 07df4a8640
commit 29ed2cc266
3 changed files with 27 additions and 6 deletions
@@ -122,6 +122,7 @@ import java.util.logging.Logger;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
@@ -1781,7 +1782,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
}
if (ViewMessages.showConfirmDialog(this, AppStrings.translate("message.confirm.removetrait"), AppStrings.translate("message.warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) {
navigator.setModel(new DefaultListModel<>());
if (scriptTraitsUsed) {
final int fTraitIndex = traitIndex;
final Traits fTraits = traits;
@@ -1802,7 +1803,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
((Tag) abc.parentTag).setModified(true);
reload();
}
}
}
@@ -1857,6 +1858,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
}
}
} while (again);
navigator.setModel(new DefaultListModel<>());
switch (kind) {
case Trait.TRAIT_GETTER:
case Trait.TRAIT_SETTER:
@@ -1906,8 +1908,14 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
abc.script_info.get(scriptIndex).setModified(true);
}
((Tag) abc.parentTag).setModified(true);
reload();
decompiledTextArea.gotoTrait(traitId);
decompiledTextArea.addScriptListener(new Runnable() {
@Override
public void run() {
decompiledTextArea.gotoTrait(traitId);
decompiledTextArea.removeScriptListener(this);
}
});
reload();
}
}
@@ -20,12 +20,14 @@ import com.jpexs.decompiler.flash.abc.ABC;
import com.jpexs.decompiler.flash.abc.types.ConvertData;
import com.jpexs.decompiler.flash.abc.types.traits.Trait;
import com.jpexs.decompiler.flash.abc.types.traits.TraitType;
import com.jpexs.decompiler.flash.abc.types.traits.Traits;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode;
import com.jpexs.decompiler.flash.helpers.HighlightedTextWriter;
import com.jpexs.decompiler.flash.helpers.NulWriter;
import com.jpexs.decompiler.flash.search.ABCSearchResult;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -99,14 +101,22 @@ public class TraitsListItem {
}
} else if (isStatic) {
ConvertData convertData = new ConvertData();
Trait trait = abc.class_info.get(classIndex).static_traits.traits.get(index);
List<Trait> traits = abc.class_info.get(classIndex).static_traits.traits;
if (index >= traits.size()) {
return "";
}
Trait trait = traits.get(index);
trait.convertHeader(null, convertData, "", abc, true, ScriptExportMode.AS, scriptIndex, classIndex, new NulWriter(), new ArrayList<>(), false);
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), false);
trait.toStringHeader(null, convertData, "", abc, true, ScriptExportMode.AS, scriptIndex, classIndex, writer, new ArrayList<>(), false);
s = writer.toString();
} else {
ConvertData convertData = new ConvertData();
Trait trait = abc.instance_info.get(classIndex).instance_traits.traits.get(index);
List<Trait> traits = abc.instance_info.get(classIndex).instance_traits.traits;
if (index >= traits.size()) {
return "";
}
Trait trait = traits.get(index);
trait.convertHeader(null, convertData, "", abc, false, ScriptExportMode.AS, scriptIndex, classIndex, new NulWriter(), new ArrayList<>(), false);
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), false);
trait.toStringHeader(null, convertData, "", abc, false, ScriptExportMode.AS, scriptIndex, classIndex, writer, new ArrayList<>(), false);