From c04675e353259f5be0965bf7da97ae3762988ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 16 Nov 2015 13:24:27 +0100 Subject: [PATCH] add/remove breakpoints --- lib/flashdebugger.jar | Bin 211376 -> 211580 bytes lib/jsyntaxpane-0.9.5.jar | Bin 562927 -> 566518 bytes .../decompiler/flash/abc/ScriptPack.java | 107 ++-- .../components/BreakPointListener.java | 10 + .../LineNumbersBreakpointsRuler.java | 57 +++ .../components/LineNumbersRuler.java | 472 +++++++++--------- .../defaultsyntaxkit/config_de.properties | 14 +- .../defaultsyntaxkit/config_nl.properties | 2 +- .../defaultsyntaxkit/config_pt_BR.properties | 8 +- .../defaultsyntaxkit/config_ru.properties | 18 +- .../defaultsyntaxkit/config_uk.properties | 42 +- .../actionscriptsyntaxkit/config.properties | 2 + .../decompiler/flash/gui/DebuggerHandler.java | 171 ++++--- src/com/jpexs/decompiler/flash/gui/Main.java | 92 +++- .../decompiler/flash/gui/MainFrameMenu.java | 47 +- .../jpexs/decompiler/flash/gui/MainPanel.java | 11 +- .../flash/gui/abc/DecompiledEditorPane.java | 56 ++- .../gui/editor/LineMarkedEditorPane.java | 262 +++++++++- 18 files changed, 938 insertions(+), 433 deletions(-) create mode 100644 libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/BreakPointListener.java create mode 100644 libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersBreakpointsRuler.java diff --git a/lib/flashdebugger.jar b/lib/flashdebugger.jar index 8e55110903fcd22ad4bbd1444e044968d501bb39..caff5adf32b06614cea684428c8eaddfb0e2b7f2 100644 GIT binary patch delta 19761 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 delta 18964 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 diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 310f86d9ac7771e8e037ebae09c97feaebb43837..195c89e1b4bd4c044ba835a6cb8c18d6ed6859df 100644 GIT binary patch delta 109288 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Πu4` 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 delta 106037 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�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 z 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 zeYkDX()); + } + bodyToPosToLine.get(bodyIndex).put(pos, line); + } else { + lonelyBody.add(bodyIndex); + } + } if (txt.charAt(i) == '\n') { line++; } - Highlighting cls = Highlighting.searchPos(decompiled.classHilights, i); - /*if (cls == null) { - continue; - }*/ - Highlighting trt = Highlighting.searchPos(decompiled.traitHilights, i); - /*if (trt == null) { - continue; - }*/ - Highlighting method = Highlighting.searchPos(decompiled.methodHilights, i); - if (method == null) { - continue; - } - Highlighting instr = Highlighting.searchPos(decompiled.instructionHilights, i); - /*if (instr == null) { - continue; - }*/ - int classIndex = cls == null ? -1 : (int) cls.getProperties().index; - int methodIndex = (int) method.getProperties().index; - int bodyIndex = abc.findBodyIndex(methodIndex); - if (bodyIndex == -1) { - continue; - } - int pos = -1; - if (instr != null) { - long instrOffset = instr.getProperties().offset; - if (trt != null && cls != null) { - int traitIndex = (int) trt.getProperties().index; - - Trait trait = abc.findTraitByTraitId(classIndex, traitIndex); - if (((trait instanceof TraitMethodGetterSetter) && (((TraitMethodGetterSetter) trait).method_info != methodIndex)) - || ((trait instanceof TraitFunction) && (((TraitFunction) trait).method_info != methodIndex))) { - continue; //inner anonymous function - ignore. TODO: make work - } - } - - try { - pos = abc.bodies.get(bodyIndex).getCode().adr2pos(instrOffset); - } catch (ConvertException cex) { - //ignore - } - if (pos == -1) { - continue; - } - if (!bodyToPosToLine.containsKey(bodyIndex)) { - bodyToPosToLine.put(bodyIndex, new HashMap<>()); - } - bodyToPosToLine.get(bodyIndex).put(pos, line); - } else { - lonelyBody.add(bodyIndex); - } } } catch (InterruptedException ex) { diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/BreakPointListener.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/BreakPointListener.java new file mode 100644 index 000000000..26c312341 --- /dev/null +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/BreakPointListener.java @@ -0,0 +1,10 @@ +package jsyntaxpane.components; + +/** + * + * @author JPEXS + */ +public interface BreakPointListener { + + public void toggled(int line); +} diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersBreakpointsRuler.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersBreakpointsRuler.java new file mode 100644 index 000000000..126c38661 --- /dev/null +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersBreakpointsRuler.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import java.awt.Point; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JEditorPane; +import javax.swing.text.BadLocationException; +import jsyntaxpane.actions.ActionUtils; + +/** + * + * @author JPEXS + */ +public class LineNumbersBreakpointsRuler extends LineNumbersRuler { + + @Override + public void install(final JEditorPane editor) { + super.install(editor); + removeMouseListener(mouseListener); + mouseListener = new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + Point p = e.getPoint(); + p.x = 0; + int loc = editor.viewToModel(p); + + int currentLine = -1; + try { + currentLine = ActionUtils.getLineNumber(editor, loc) + 1; + } catch (BadLocationException ex) { + //ignore + } + + if (currentLine > -1 && (editor instanceof BreakPointListener)) { + ((BreakPointListener) editor).toggled(currentLine); + } + } + + }; + addMouseListener(mouseListener); + } + +} diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java index e7ff36525..78db74374 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java @@ -47,286 +47,284 @@ import jsyntaxpane.util.Configuration; /** * This class will display line numbers for a related text component. The text - * component must use the same line height for each line. + * component must use the same line height for each line. * - * This class was designed to be used as a component added to the row header - * of a JScrollPane. + * This class was designed to be used as a component added to the row header of + * a JScrollPane. * - * Original code from http://tips4java.wordpress.com/2009/05/23/text-component-line-number/ + * Original code from + * http://tips4java.wordpress.com/2009/05/23/text-component-line-number/ * * @author Rob Camick * * Revised for jsyntaxpane - * + * * @author Ayman Al-Sairafi */ public class LineNumbersRuler extends JPanel - implements CaretListener, DocumentListener, PropertyChangeListener, SyntaxComponent { + implements CaretListener, DocumentListener, PropertyChangeListener, SyntaxComponent { - public static final String PROPERTY_BACKGROUND = "LineNumbers.Background"; - public static final String PROPERTY_FOREGROUND = "LineNumbers.Foreground"; - public static final String PROPERTY_CURRENT_BACK = "LineNumbers.CurrentBack"; - public static final String PROPERTY_LEFT_MARGIN = "LineNumbers.LeftMargin"; - public static final String PROPERTY_RIGHT_MARGIN = "LineNumbers.RightMargin"; - public static final String PROPERTY_Y_OFFSET = "LineNumbers.YOFFset"; - public static final int DEFAULT_R_MARGIN = 5; - public static final int DEFAULT_L_MARGIN = 5; - private Status status; - private final static int HEIGHT = Integer.MAX_VALUE - 1000000; - // Text component this TextTextLineNumber component is in sync with - private JEditorPane editor; - private int minimumDisplayDigits = 2; - // Keep history information to reduce the number of times the component - // needs to be repainted - private int lastDigits; - private int lastHeight; - private int lastLine; - private MouseListener mouseListener = null; - // The formatting to use for displaying numbers. Use in String.format(numbersFormat, line) - private String numbersFormat = "%3d"; + public static final String PROPERTY_BACKGROUND = "LineNumbers.Background"; + public static final String PROPERTY_FOREGROUND = "LineNumbers.Foreground"; + public static final String PROPERTY_CURRENT_BACK = "LineNumbers.CurrentBack"; + public static final String PROPERTY_LEFT_MARGIN = "LineNumbers.LeftMargin"; + public static final String PROPERTY_RIGHT_MARGIN = "LineNumbers.RightMargin"; + public static final String PROPERTY_Y_OFFSET = "LineNumbers.YOFFset"; + public static final int DEFAULT_R_MARGIN = 5; + public static final int DEFAULT_L_MARGIN = 5; + private Status status; + private final static int HEIGHT = Integer.MAX_VALUE - 1000000; + // Text component this TextTextLineNumber component is in sync with + private JEditorPane editor; + private int minimumDisplayDigits = 2; + // Keep history information to reduce the number of times the component + // needs to be repainted + private int lastDigits; + private int lastHeight; + private int lastLine; + //JPEXS: private lowered to protected to allow replacing mouseListener + protected MouseListener mouseListener = null; + // The formatting to use for displaying numbers. Use in String.format(numbersFormat, line) + private String numbersFormat = "%3d"; - private Color currentLineColor; + private Color currentLineColor; - /** - * Get the JscrollPane that contains this EditorPane, or null if no - * JScrollPane is the parent of this editor - * @param editorPane - * @return - */ - public JScrollPane getScrollPane(JTextComponent editorPane) { - Container p = editorPane.getParent(); - while (p != null) { - if (p instanceof JScrollPane) { - return (JScrollPane) p; - } - p = p.getParent(); - } - return null; - } + /** + * Get the JscrollPane that contains this EditorPane, or null if no + * JScrollPane is the parent of this editor + * + * @param editorPane + * @return + */ + public JScrollPane getScrollPane(JTextComponent editorPane) { + Container p = editorPane.getParent(); + while (p != null) { + if (p instanceof JScrollPane) { + return (JScrollPane) p; + } + p = p.getParent(); + } + return null; + } - @Override - public void config(Configuration config) { - int right = config.getInteger(PROPERTY_RIGHT_MARGIN, DEFAULT_R_MARGIN); - int left = config.getInteger(PROPERTY_LEFT_MARGIN, DEFAULT_L_MARGIN); - Color foreground = config.getColor(PROPERTY_FOREGROUND, Color.BLACK); - setForeground(foreground); - Color back = config.getColor(PROPERTY_BACKGROUND, Color.WHITE); - setBackground(back); - setBorder(BorderFactory.createEmptyBorder(0, left, 0, right)); - currentLineColor = config.getColor(PROPERTY_CURRENT_BACK, back); - } + @Override + public void config(Configuration config) { + int right = config.getInteger(PROPERTY_RIGHT_MARGIN, DEFAULT_R_MARGIN); + int left = config.getInteger(PROPERTY_LEFT_MARGIN, DEFAULT_L_MARGIN); + Color foreground = config.getColor(PROPERTY_FOREGROUND, Color.BLACK); + setForeground(foreground); + Color back = config.getColor(PROPERTY_BACKGROUND, Color.WHITE); + setBackground(back); + setBorder(BorderFactory.createEmptyBorder(0, left, 0, right)); + currentLineColor = config.getColor(PROPERTY_CURRENT_BACK, back); + } - @Override - public void install(final JEditorPane editor) { - this.editor = editor; + @Override + public void install(final JEditorPane editor) { + this.editor = editor; - setFont(editor.getFont()); + setFont(editor.getFont()); - // setMinimumDisplayDigits(3); + // setMinimumDisplayDigits(3); + editor.getDocument().addDocumentListener(this); + editor.addCaretListener(this); + editor.addPropertyChangeListener(this); + JScrollPane sp = getScrollPane(editor); + sp.setRowHeaderView(this); + mouseListener = new MouseAdapter() { - editor.getDocument().addDocumentListener(this); - editor.addCaretListener(this); - editor.addPropertyChangeListener(this); - JScrollPane sp = getScrollPane(editor); - sp.setRowHeaderView(this); - mouseListener = new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + GotoLineDialog.showForEditor(editor); + } + }; + addMouseListener(mouseListener); + status = Status.INSTALLING; + } - @Override - public void mouseClicked(MouseEvent e) { - GotoLineDialog.showForEditor(editor); - } - }; - addMouseListener(mouseListener); - status = Status.INSTALLING; - } + @Override + public void deinstall(JEditorPane editor) { + removeMouseListener(mouseListener); + status = Status.DEINSTALLING; + editor.getDocument().removeDocumentListener(this); + editor.removeCaretListener(this); + editor.removePropertyChangeListener(this); + JScrollPane sp = getScrollPane(editor); + if (sp != null) { + sp.setRowHeaderView(null); + } + } - @Override - public void deinstall(JEditorPane editor) { - removeMouseListener(mouseListener); - status = Status.DEINSTALLING; - this.editor.getDocument().removeDocumentListener(this); - editor.removeCaretListener(this); - editor.removePropertyChangeListener(this); - JScrollPane sp = getScrollPane(editor); - if (sp != null) { - editor.getDocument().removeDocumentListener(this); - sp.setRowHeaderView(null); - } - } + /** + * Gets the minimum display digits + * + * @return the minimum display digits + */ + public int getMinimumDisplayDigits() { + return minimumDisplayDigits; + } - /** - * Gets the minimum display digits - * - * @return the minimum display digits - */ - public int getMinimumDisplayDigits() { - return minimumDisplayDigits; - } + /** + * Specify the minimum number of digits used to calculate the preferred + * width of the component. Default is 3. + * + * @param minimumDisplayDigits the number digits used in the preferred width + * calculation + */ + public void setMinimumDisplayDigits(int minimumDisplayDigits) { + this.minimumDisplayDigits = minimumDisplayDigits; + setPreferredWidth(); + } - /** - * Specify the minimum number of digits used to calculate the preferred - * width of the component. Default is 3. - * - * @param minimumDisplayDigits the number digits used in the preferred - * width calculation - */ - public void setMinimumDisplayDigits(int minimumDisplayDigits) { - this.minimumDisplayDigits = minimumDisplayDigits; - setPreferredWidth(); - } + /** + * Calculate the width needed to display the maximum line number + */ + private void setPreferredWidth() { + int lines = ActionUtils.getLineCount(editor); + int digits = Math.max(String.valueOf(lines).length(), minimumDisplayDigits); - /** - * Calculate the width needed to display the maximum line number - */ - private void setPreferredWidth() { - int lines = ActionUtils.getLineCount(editor); - int digits = Math.max(String.valueOf(lines).length(), minimumDisplayDigits); + // Update sizes when number of digits in the line number changes + if (lastDigits != digits) { + lastDigits = digits; + numbersFormat = "%" + digits + "d"; + FontMetrics fontMetrics = getFontMetrics(getFont()); + int width = fontMetrics.charWidth('0') * digits; + Insets insets = getInsets(); + int preferredWidth = insets.left + insets.right + width; - // Update sizes when number of digits in the line number changes + Dimension d = getPreferredSize(); + d.setSize(preferredWidth, HEIGHT); + setPreferredSize(d); + setSize(d); - if (lastDigits != digits) { - lastDigits = digits; - numbersFormat = "%" + digits + "d"; - FontMetrics fontMetrics = getFontMetrics(getFont()); - int width = fontMetrics.charWidth('0') * digits; - Insets insets = getInsets(); - int preferredWidth = insets.left + insets.right + width; + } + } - Dimension d = getPreferredSize(); - d.setSize(preferredWidth, HEIGHT); - setPreferredSize(d); - setSize(d); + /** + * Draw the line numbers + */ + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); - } - } + FontMetrics fontMetrics = editor.getFontMetrics(editor.getFont()); + Insets insets = getInsets(); + int currentLine = -1; + try { + // get current line, and add one as we start from 1 for the display + currentLine = ActionUtils.getLineNumber(editor, editor.getCaretPosition()) + 1; + } catch (BadLocationException ex) { + // this wont happen, even if it does, we can ignore it and we will not have + // a current line to worry about... + } - /** - * Draw the line numbers - */ - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); + int lh = fontMetrics.getHeight(); + int maxLines = ActionUtils.getLineCount(editor); + SyntaxView.setRenderingHits((Graphics2D) g); - FontMetrics fontMetrics = editor.getFontMetrics(editor.getFont()); - Insets insets = getInsets(); - int currentLine = -1; - try { - // get current line, and add one as we start from 1 for the display - currentLine = ActionUtils.getLineNumber(editor, editor.getCaretPosition()) + 1; - } catch (BadLocationException ex) { - // this wont happen, even if it does, we can ignore it and we will not have - // a current line to worry about... - } - - int lh = fontMetrics.getHeight(); - int maxLines = ActionUtils.getLineCount(editor); - SyntaxView.setRenderingHits((Graphics2D) g); - - Rectangle bounds = g.getClipBounds(); - int minY = bounds.y; - int maxY = minY + bounds.height; - for (int line = 1; line <= maxLines; line++) { - int y = line * lh; - if (y < minY) { - continue; - } - if (y - lh > maxY) { - break; - } - String lineNumber = String.format(numbersFormat, line); - if (line == currentLine) { - g.setColor(currentLineColor); - g.fillRect(0, y - lh + fontMetrics.getDescent() - 1, getWidth(), lh); - g.setColor(getForeground()); - g.drawString(lineNumber, insets.left, y); - } else { - g.drawString(lineNumber, insets.left, y); - } - } - } + Rectangle bounds = g.getClipBounds(); + int minY = bounds.y; + int maxY = minY + bounds.height; + for (int line = 1; line <= maxLines; line++) { + int y = line * lh; + if (y < minY) { + continue; + } + if (y - lh > maxY) { + break; + } + String lineNumber = String.format(numbersFormat, line); + if (line == currentLine) { + g.setColor(currentLineColor); + g.fillRect(0, y - lh + fontMetrics.getDescent() - 1, getWidth(), lh); + g.setColor(getForeground()); + g.drawString(lineNumber, insets.left, y); + } else { + g.drawString(lineNumber, insets.left, y); + } + } + } // // Implement CaretListener interface // - @Override - public void caretUpdate(CaretEvent e) { - // Get the line the caret is positioned on + @Override + public void caretUpdate(CaretEvent e) { + // Get the line the caret is positioned on - int caretPosition = editor.getCaretPosition(); - Element root = editor.getDocument().getDefaultRootElement(); - int currentLine = root.getElementIndex(caretPosition); + int caretPosition = editor.getCaretPosition(); + Element root = editor.getDocument().getDefaultRootElement(); + int currentLine = root.getElementIndex(caretPosition); - // Need to repaint so the correct line number can be highlighted - - if (lastLine != currentLine) { - repaint(); - lastLine = currentLine; - } - } + // Need to repaint so the correct line number can be highlighted + if (lastLine != currentLine) { + repaint(); + lastLine = currentLine; + } + } // // Implement DocumentListener interface // - @Override - public void changedUpdate(DocumentEvent e) { - documentChanged(); - } + @Override + public void changedUpdate(DocumentEvent e) { + documentChanged(); + } - @Override - public void insertUpdate(DocumentEvent e) { - documentChanged(); - } + @Override + public void insertUpdate(DocumentEvent e) { + documentChanged(); + } - @Override - public void removeUpdate(DocumentEvent e) { - documentChanged(); - } + @Override + public void removeUpdate(DocumentEvent e) { + documentChanged(); + } - /* - * A document change may affect the number of displayed lines of text. - * Therefore the lines numbers will also change. - */ - private void documentChanged() { - // Preferred size of the component has not been updated at the time - // the DocumentEvent is fired + /* + * A document change may affect the number of displayed lines of text. + * Therefore the lines numbers will also change. + */ + private void documentChanged() { + // Preferred size of the component has not been updated at the time + // the DocumentEvent is fired - SwingUtilities.invokeLater(new Runnable() { + SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - int preferredHeight = editor.getPreferredSize().height; + @Override + public void run() { + int preferredHeight = editor.getPreferredSize().height; - // Document change has caused a change in the number of lines. - // Repaint to reflect the new line numbers + // Document change has caused a change in the number of lines. + // Repaint to reflect the new line numbers + if (lastHeight != preferredHeight) { + setPreferredWidth(); + repaint(); + lastHeight = preferredHeight; + } + } + }); + } - if (lastHeight != preferredHeight) { - setPreferredWidth(); - repaint(); - lastHeight = preferredHeight; - } - } - }); - } - - /** - * Implement PropertyChangeListener interface - */ - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals("document")) { - if (evt.getOldValue() instanceof SyntaxDocument) { - SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getOldValue(); - syntaxDocument.removeDocumentListener(this); - } - if (evt.getNewValue() instanceof SyntaxDocument && status.equals(Status.INSTALLING)) { - SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getNewValue(); - syntaxDocument.addDocumentListener(this); - setPreferredWidth(); - repaint(); - } - } else if (evt.getNewValue() instanceof Font) { - setPreferredWidth(); - repaint(); - } - } + /** + * Implement PropertyChangeListener interface + */ + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("document")) { + if (evt.getOldValue() instanceof SyntaxDocument) { + SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getOldValue(); + syntaxDocument.removeDocumentListener(this); + } + if (evt.getNewValue() instanceof SyntaxDocument && status.equals(Status.INSTALLING)) { + SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getNewValue(); + syntaxDocument.addDocumentListener(this); + setPreferredWidth(); + repaint(); + } + } else if (evt.getNewValue() instanceof Font) { + setPreferredWidth(); + repaint(); + } + } } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_de.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_de.properties index df01d1bab..99c08bf48 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_de.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_de.properties @@ -1,24 +1,24 @@ DefaultAction.copy-to-clipboard.MenuText = Kopieren DefaultAction.cut-to-clipboard.MenuText = Ausschneiden -DefaultAction.paste-from-clipboard.MenuText = Einf\u00FCgen -DefaultAction.select-all.MenuText = Alles ausw\u00E4hlen +DefaultAction.paste-from-clipboard.MenuText = Einf\u00fcgen +DefaultAction.select-all.MenuText = Alles ausw\u00e4hlen Action.find.MenuText = Suchen Action.find.ToolTip = Suche anzeigen und Dialog ersetzen -Action.find-next.MenuText = N\u00E4chstes suchen +Action.find-next.MenuText = N\u00e4chstes suchen Action.find-next.ToolTip = Letzte Suche wiederholen Action.goto-line.MenuText = Zu Linienmummer gehen Action.goto-line.ToolTip = Zu Linienmummer gehen Action.indent.MenuText = Einzug Action.unindent.MenuText = Auszug -Action.undo.MenuText = R\u00FCchg\u00E4ngig +Action.undo.MenuText = R\u00fcchg\u00e4ngig Action.redo.MenuText = Wiederholen -Action.delete-lines.MenuText = Linie(n) L\u00F6schen +Action.delete-lines.MenuText = Linie(n) L\u00f6schen Action.dup-lines-up.MenuText = Obere Linie dublizieren Action.dup-lines-down.MenuText = Untere Linie dublizieren Action.toggle-lines.MenuText = Liniennummern umshalten -Action.show-abbs.MenuText = Abk\u00FCrzungen anzeigen -Action.show-abbs.ToolTip = Abk\u00FCrzungen anzeigen +Action.show-abbs.MenuText = Abk\u00fcrzungen anzeigen +Action.show-abbs.ToolTip = Abk\u00fcrzungen anzeigen Action.complete-word.MenuText = Wort komplettieren Action.jump-to-pair.MenuText = Gehe zum Paar Action.toggle-comments.MenuText = Kommentare umschalten diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_nl.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_nl.properties index cb9363c74..48c9fd984 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_nl.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_nl.properties @@ -1,4 +1,4 @@ -DefaultAction.copy-to-clipboard.MenuText = Kopi\u00EBren +DefaultAction.copy-to-clipboard.MenuText = Kopi\u00ebren DefaultAction.cut-to-clipboard.MenuText = Snijden DefaultAction.paste-from-clipboard.MenuText = Plakken DefaultAction.select-all.MenuText = Alles selecteren diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_pt_BR.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_pt_BR.properties index 93b07e592..bb223e85e 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_pt_BR.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_pt_BR.properties @@ -4,11 +4,11 @@ DefaultAction.paste-from-clipboard.MenuText = Colar DefaultAction.select-all.MenuText = Escolher tudo Action.find.MenuText = Procurar -Action.find.ToolTip = Mostrar procura e trocar diálogo +Action.find.ToolTip = Mostrar procura e trocar di\u00c3\u00a1logo Action.find-next.MenuText = Procurar proximo -Action.find-next.ToolTip = Repetir última procura -Action.goto-line.MenuText = Ir para a linha número -Action.goto-line.ToolTip = Ir para a linha número +Action.find-next.ToolTip = Repetir \u00c3\u00baltima procura +Action.goto-line.MenuText = Ir para a linha n\u00c3\u00bamero +Action.goto-line.ToolTip = Ir para a linha n\u00c3\u00bamero Action.indent.MenuText = Indentar Action.unindent.MenuText = Des-identar Action.undo.MenuText = Voltar a tr\u00e1s diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_ru.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_ru.properties index b1e554666..c95eb16fb 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_ru.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_ru.properties @@ -4,24 +4,24 @@ DefaultAction.paste-from-clipboard.MenuText = \u0412\u0441\u0442\u0430\u0432\u04 DefaultAction.select-all.MenuText = \u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0451 Action.find.MenuText = \u041d\u0430\u0439\u0442\u0438 -Action.find.ToolTip = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E \u041D\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u043C\u0435\u043D\u0438\u0442\u044C +Action.find.ToolTip = \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u041d\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c Action.find-next.MenuText = \u0418\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 Action.find-next.ToolTip = \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0438\u0441\u043a -Action.goto-line.MenuText = \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u0441\u0442\u0440\u043E\u043A\u0435 +Action.goto-line.MenuText = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0442\u0440\u043e\u043a\u0435 Action.goto-line.ToolTip = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c Action.indent.MenuText = \u041e\u0442\u0441\u0442\u0443\u043f\u0438\u0442\u044c Action.unindent.MenuText = \u0423\u0431\u0440\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f -Action.undo.MenuText = \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C -Action.redo.MenuText = \u0412\u0435\u0440\u043D\u0443\u0442\u044C -Action.delete-lines.MenuText = \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443(\u0441\u0442\u0440\u043E\u043A\u0438) +Action.undo.MenuText = \u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c +Action.redo.MenuText = \u0412\u0435\u0440\u043d\u0443\u0442\u044c +Action.delete-lines.MenuText = \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443(\u0441\u0442\u0440\u043e\u043a\u0438) Action.dup-lines-up.MenuText = \u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u044b\u0448\u0435 Action.dup-lines-down.MenuText = \u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0438\u0436\u0435 -Action.toggle-lines.MenuText = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u043a -Action.show-abbs.MenuText = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f -Action.show-abbs.ToolTip = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f +Action.toggle-lines.MenuText = \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u043a +Action.show-abbs.MenuText = \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f +Action.show-abbs.ToolTip = \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f Action.complete-word.MenuText = \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e Action.jump-to-pair.MenuText = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043f\u0430\u0440\u0435 -Action.toggle-comments.MenuText = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 +Action.toggle-comments.MenuText = \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 # !!!! FFDec translators - please do not edit anything below this line !!! #========================================================================== diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_uk.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_uk.properties index fecdc779d..d672851a3 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_uk.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_uk.properties @@ -1,27 +1,27 @@ -DefaultAction.copy-to-clipboard.MenuText = \u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 +DefaultAction.copy-to-clipboard.MenuText = \u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 DefaultAction.cut-to-clipboard.MenuText = \u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 DefaultAction.paste-from-clipboard.MenuText = \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 -DefaultAction.select-all.MenuText = \u0412\u0438\u0434\u0456\u043B\u0438\u0442\u0438 \u0432\u0441\u0435 +DefaultAction.select-all.MenuText = \u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435 -Action.find.MenuText = \u0417\u043D\u0430\u0439\u0442\u0438 -Action.find.ToolTip = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u043A\u043D\u043E \u0434\u0456\u0430\u043B\u043E\u0433\u0443 \u0417\u043D\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043C\u0456\u043D\u0438\u0442\u0438 -Action.find-next.MenuText = \u0428\u0443\u043A\u0430\u0442\u0438 \u0434\u0430\u043B\u0456 -Action.find-next.ToolTip = \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u0456\u0439 \u043F\u043E\u0448\u0443\u043A -Action.goto-line.MenuText = \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u0440\u044F\u0434\u043A\u0430 -Action.goto-line.ToolTip = \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u0440\u044F\u0434\u043A\u0430 \u0437\u0430 \u043D\u043E\u043C\u0435\u0440\u043E\u043C -Action.indent.MenuText = \u0417\u0440\u043E\u0431\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043F -Action.unindent.MenuText = \u041F\u0440\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043F -Action.undo.MenuText = \u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 -Action.redo.MenuText = \u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438 -Action.delete-lines.MenuText = \u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u044F\u0434\u043E\u043A(\u0440\u044F\u0434\u043A\u0438) -Action.dup-lines-up.MenuText = \u0414\u0443\u0431\u043B\u044E\u0432\u0430\u0442\u0438 \u0440\u044F\u0434\u043A\u0438 \u0432\u0438\u0449\u0435 -Action.dup-lines-down.MenuText = \u0414\u0443\u0431\u043B\u044E\u0432\u0430\u0442\u0438 \u0440\u044F\u0434\u043A\u0438 \u043D\u0438\u0436\u0447\u0435 -Action.toggle-lines.MenuText = \u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0443\u043C\u0435\u0440\u0430\u0446\u0456\u044E \u0440\u044F\u0434\u043A\u0456\u0432 -Action.show-abbs.MenuText = \u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043A\u043E\u0440\u043E\u0447\u0435\u043D\u043D\u044F -Action.show-abbs.ToolTip = \u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043A\u043E\u0440\u043E\u0447\u0435\u043D\u043D\u044F -Action.complete-word.MenuText = \u0414\u043E\u043F\u043E\u0432\u043D\u0438\u0442\u0438 \u0441\u043B\u043E\u0432\u043E -Action.jump-to-pair.MenuText = \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u043F\u0430\u0440\u0438 -Action.toggle-comments.MenuText = \u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0435\u043D\u0442\u0430\u0440\u0456 +Action.find.MenuText = \u0417\u043d\u0430\u0439\u0442\u0438 +Action.find.ToolTip = \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u043a\u043d\u043e \u0434\u0456\u0430\u043b\u043e\u0433\u0443 \u0417\u043d\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438 +Action.find-next.MenuText = \u0428\u0443\u043a\u0430\u0442\u0438 \u0434\u0430\u043b\u0456 +Action.find-next.ToolTip = \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u043f\u043e\u0448\u0443\u043a +Action.goto-line.MenuText = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043e \u0440\u044f\u0434\u043a\u0430 +Action.goto-line.ToolTip = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043e \u0440\u044f\u0434\u043a\u0430 \u0437\u0430 \u043d\u043e\u043c\u0435\u0440\u043e\u043c +Action.indent.MenuText = \u0417\u0440\u043e\u0431\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f +Action.unindent.MenuText = \u041f\u0440\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f +Action.undo.MenuText = \u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438 +Action.redo.MenuText = \u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 +Action.delete-lines.MenuText = \u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a(\u0440\u044f\u0434\u043a\u0438) +Action.dup-lines-up.MenuText = \u0414\u0443\u0431\u043b\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043a\u0438 \u0432\u0438\u0449\u0435 +Action.dup-lines-down.MenuText = \u0414\u0443\u0431\u043b\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043a\u0438 \u043d\u0438\u0436\u0447\u0435 +Action.toggle-lines.MenuText = \u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0456\u044e \u0440\u044f\u0434\u043a\u0456\u0432 +Action.show-abbs.MenuText = \u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044f +Action.show-abbs.ToolTip = \u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044f +Action.complete-word.MenuText = \u0414\u043e\u043f\u043e\u0432\u043d\u0438\u0442\u0438 \u0441\u043b\u043e\u0432\u043e +Action.jump-to-pair.MenuText = \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043e \u043f\u0430\u0440\u0438 +Action.toggle-comments.MenuText = \u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0456 # !!!! FFDec translators - please do not edit anything below this line !!! #========================================================================== diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties index 9b9b362dd..51fb2995e 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties @@ -2,6 +2,8 @@ # ActionScript # +Components = jsyntaxpane.components.PairsMarker, jsyntaxpane.components.LineNumbersBreakpointsRuler + Action.indent.WordRegex=\\w+|\\/(\\*)+ Action.parenthesis = jsyntaxpane.actions.PairAction, typed ( Action.brackets = jsyntaxpane.actions.PairAction, typed [ diff --git a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java index 11bce10e7..21c11ac52 100644 --- a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java +++ b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java @@ -21,19 +21,23 @@ import com.jpexs.debugger.flash.DebugMessageListener; import com.jpexs.debugger.flash.Debugger; import com.jpexs.debugger.flash.DebuggerCommands; import com.jpexs.debugger.flash.DebuggerConnection; -import com.jpexs.debugger.flash.InDebuggerMessage; import com.jpexs.debugger.flash.messages.in.InAskBreakpoints; import com.jpexs.debugger.flash.messages.in.InBreakAt; import com.jpexs.debugger.flash.messages.in.InContinue; import com.jpexs.debugger.flash.messages.in.InNumScript; import com.jpexs.debugger.flash.messages.in.InScript; +import com.jpexs.debugger.flash.messages.in.InSetBreakpoint; import com.jpexs.debugger.flash.messages.in.InSwfInfo; import com.jpexs.decompiler.flash.abc.ClassPath; +import com.jpexs.decompiler.flash.abc.ScriptPack; import com.jpexs.decompiler.graph.DottedChain; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -48,6 +52,15 @@ public class DebuggerHandler implements DebugConnectionListener { private DebuggerCommands commands = null; private List swfs = new ArrayList<>(); private boolean paused = true; + private Map modulePaths = new HashMap<>(); + private Map classToModule = new HashMap<>(); + + public int moduleIdOf(ScriptPack pack) { + if (classToModule.containsKey(pack.getClassPath())) { + return classToModule.get(pack.getClassPath()); + } + return -1; + } public synchronized boolean isPaused() { return paused; @@ -57,11 +70,22 @@ public class DebuggerHandler implements DebugConnectionListener { return swfs; } + public void disconnect() { + connected = false; + if (commands != null) { + commands.disconnect(); + } + commands = null; + } + public boolean isConnected() { return connected; } - public DebuggerCommands getCommands() { + public DebuggerCommands getCommands() throws IOException { + if (!isConnected() || commands == null) { + throw new IOException("Not connected"); + } return commands; } @@ -84,66 +108,89 @@ public class DebuggerHandler implements DebugConnectionListener { //rootLog.getHandlers()[0].setLevel(level); commands = new DebuggerCommands(con); - commands.stopWarning(); - commands.setStopOnFault(); - commands.setEnumerateOverride(); - commands.setNotifyFailure(); - commands.setInvokeSetters(); - commands.setSwfLoadNotify(); - commands.setGetterTimeout(1500); - commands.setSetterTimeout(5000); - commands.squelch(true); - swfs = commands.getSwfInfo(1); - int numScript = con.getMessage(InNumScript.class).num; - final Map moduleNames = new HashMap<>(); - for (int i = 0; i < numScript; i++) { - InScript sc = con.getMessage(InScript.class); - System.out.println("" + sc.module + ":" + sc.name); - moduleNames.put(sc.module, sc.name); + try { + commands.stopWarning(); + commands.setStopOnFault(); + commands.setEnumerateOverride(); + commands.setNotifyFailure(); + commands.setInvokeSetters(); + commands.setSwfLoadNotify(); + commands.setGetterTimeout(1500); + commands.setSetterTimeout(5000); + commands.squelch(true); + swfs = commands.getSwfInfo(1); + + Map moduleNames = new HashMap<>(); + + modulePaths = new HashMap<>(); + classToModule = new HashMap<>(); + + int numScript = con.getMessage(InNumScript.class).num; + for (int i = 0; i < numScript; i++) { + InScript sc = con.getMessage(InScript.class); + moduleNames.put(sc.module, sc.name); + } + + for (int mname : moduleNames.keySet()) { + String name = moduleNames.get(mname); + String[] parts = name.split(";"); + + if (parts.length == 3) { + String clsName = parts[2].replace(".as", ""); + String pkg = parts[1].replace("/", "\\").replace("\\", "."); + ClassPath cp = new ClassPath(DottedChain.parse(pkg), clsName); + modulePaths.put(mname, cp); + classToModule.put(cp, mname); + } + } + + con.getMessage(InSetBreakpoint.class); + con.getMessage(InAskBreakpoints.class); + con.addMessageListener(new DebugMessageListener() { + + @Override + public void message(InContinue msg) { + synchronized (DebuggerHandler.this) { + paused = false; + } + Main.getMainFrame().getPanel().updateMenu(); + } + }); + con.addMessageListener(new DebugMessageListener() { + + @Override + public void message(InBreakAt message) { + synchronized (DebuggerHandler.this) { + paused = true; + } + Main.getMainFrame().getPanel().updateMenu(); + Logger.getLogger(DebuggerHandler.class.getName()).log(Level.INFO, "break at {0}:{1}", new Object[]{moduleNames.get(message.file), message.line}); + if (!modulePaths.containsKey(message.file)) { + return; + } + String cls = modulePaths.get(message.file).toString(); + Main.getMainFrame().getPanel().debuggerBreakAt(Main.getMainFrame().getPanel().getCurrentSwf(), cls, message.line); + //dc.sendContinue(); + } + }); + //commands.sendContinue(); + List packs = Main.getMainFrame().getPanel().getCurrentSwf().getAS3Packs(); + for (ScriptPack sp : packs) { + ClassPath cp = sp.getClassPath(); + if (classToModule.containsKey(cp)) { + int file = classToModule.get(cp); + Set bpts = new TreeSet<>(Main.getPackBreakPoints(sp)); + for (int line : bpts) { + if (!commands.addBreakPoint(file, line)) { + Main.markBreakPointInvalid(sp, line); + } + } + } + } + Main.getMainFrame().getPanel().refreshBreakPoints(); + connected = true; + } catch (IOException ex) { + connected = false; } - - final Map modulePaths = new HashMap<>(); - - for (int mname : moduleNames.keySet()) { - String name = moduleNames.get(mname); - String[] parts = name.split(";"); - - if (parts.length == 3) { - String clsName = parts[2].replace(".as", ""); - String pkg = parts[1].replace("/", "\\").replace("\\", "."); - modulePaths.put(mname, new ClassPath(DottedChain.parse(pkg), clsName)); - } - } - - con.getMessage(InAskBreakpoints.class); - con.addMessageListener(new DebugMessageListener() { - - @Override - public void message(InContinue msg) { - synchronized (DebuggerHandler.this) { - paused = false; - } - Main.getMainFrame().getPanel().updateMenu(); - } - }); - con.addMessageListener(new DebugMessageListener() { - - @Override - public void message(InBreakAt message) { - synchronized (DebuggerHandler.this) { - paused = true; - } - Main.getMainFrame().getPanel().updateMenu(); - Logger.getLogger(DebuggerHandler.class.getName()).log(Level.INFO, "break at {0}:{1}", new Object[]{moduleNames.get(message.file), message.line}); - if (!modulePaths.containsKey(message.file)) { - return; - } - String cls = modulePaths.get(message.file).toString(); - Main.getMainFrame().getPanel().debuggerBreakAt(Main.getMainFrame().getPanel().getCurrentSwf(), cls, message.line); - //dc.sendContinue(); - } - }); - //commands.sendContinue(); - connected = true; } } diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 7016ca3bc..7e90e3483 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -34,6 +34,7 @@ import com.jpexs.decompiler.flash.SWFSourceInfo; import com.jpexs.decompiler.flash.SearchMode; import com.jpexs.decompiler.flash.SwfOpenException; import com.jpexs.decompiler.flash.Version; +import com.jpexs.decompiler.flash.abc.ScriptPack; import com.jpexs.decompiler.flash.abc.avm2.AVM2Code; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.configuration.SwfSpecificConfiguration; @@ -90,10 +91,14 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeSet; +import java.util.WeakHashMap; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.logging.ConsoleHandler; @@ -153,6 +158,91 @@ public class Main { private static DebuggerHandler debugHandler = null; + private static Map> breakPointMap = new WeakHashMap<>(); + private static Map> invalidBreakPointMap = new WeakHashMap<>(); + + public static void clearBreakPoints(ScriptPack pack) { + if (breakPointMap.containsKey(pack)) { + breakPointMap.remove(pack); + } + } + + public static boolean isBreakPointValid(ScriptPack pack, int line) { + if (!invalidBreakPointMap.containsKey(pack)) { + return true; + } + return !invalidBreakPointMap.get(pack).contains(line); + + } + + public static void markBreakPointInvalid(ScriptPack pack, int line) { + if (!invalidBreakPointMap.containsKey(pack)) { + invalidBreakPointMap.put(pack, new TreeSet<>()); + } + invalidBreakPointMap.get(pack).add(line); + } + + public static void addBreakPoint(ScriptPack pack, int line) { + if (!breakPointMap.containsKey(pack)) { + breakPointMap.put(pack, new TreeSet<>()); + } + breakPointMap.get(pack).add(line); + if (debugHandler.isConnected()) { + int file = debugHandler.moduleIdOf(pack); + if (file > -1) { + try { + if (!debugHandler.getCommands().addBreakPoint(file, line)) { + markBreakPointInvalid(pack, line); + } + } catch (IOException ex) { + debugHandler.disconnect(); + //ignore + } + } + } + } + + public static void removeBreakPoint(ScriptPack pack, int line) { + if (breakPointMap.containsKey(pack)) { + Set lines = breakPointMap.get(pack); + if (lines != null) { + lines.remove(line); + } + } + if (debugHandler.isConnected()) { + int file = debugHandler.moduleIdOf(pack); + if (file > -1) { + try { + debugHandler.getCommands().removeBreakPoint(file, line); + } catch (IOException ex) { + debugHandler.disconnect(); + //ignore + } + } + } + } + + public static boolean toggleBreakPoint(ScriptPack pack, int line) { + if (!breakPointMap.containsKey(pack)) { + addBreakPoint(pack, line); + return true; + } + if (breakPointMap.get(pack).contains(line)) { + removeBreakPoint(pack, line); + return false; + } else { + addBreakPoint(pack, line); + return true; + } + } + + public static Set getPackBreakPoints(ScriptPack pack) { + if (!breakPointMap.containsKey(pack)) { + return new HashSet<>(); + } + return breakPointMap.get(pack); + } + public static DebuggerHandler getDebugHandler() { return debugHandler; } @@ -1465,7 +1555,7 @@ public class Main { String proxyAddress = Configuration.updateProxyAddress.get(); URL url = new URL(ApplicationInfo.updateCheckUrl); - URLConnection uc = null; + URLConnection uc; if (proxyAddress != null && !proxyAddress.isEmpty()) { int port = 8080; if (proxyAddress.contains(":")) { diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index 4ea37793f..e433d06c0 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -1097,6 +1097,9 @@ public abstract class MainFrameMenu implements MenuBuilder { } runProcess = null; mainFrame.getPanel().clearDebuggerColors(); + if (runProcessDebug) { + Main.getDebugHandler().disconnect(); + } } private void runPlayer(String exePath, String file, String flashVars) { @@ -1124,8 +1127,7 @@ public abstract class MainFrameMenu implements MenuBuilder { proc.waitFor(); } catch (InterruptedException ex) { - Logger.getLogger(MainFrameMenu.class - .getName()).log(Level.SEVERE, null, ex); + //ignore } freeRun(); updateComponents(); @@ -1232,46 +1234,67 @@ public abstract class MainFrameMenu implements MenuBuilder { } public boolean pauseActionPerformed(ActionEvent evt) { - DebuggerCommands cmd = Main.getDebugHandler().getCommands(); - if (cmd != null) { + try { + DebuggerCommands cmd = Main.getDebugHandler().getCommands(); //TODO + + } catch (IOException ex) { + Main.getDebugHandler().disconnect(); + //ignore } return true; } public boolean stepOverActionPerformed(ActionEvent evt) { - DebuggerCommands cmd = Main.getDebugHandler().getCommands(); - if (cmd != null) { + try { + + DebuggerCommands cmd = Main.getDebugHandler().getCommands(); mainFrame.getPanel().clearDebuggerColors(); cmd.stepOver(); + } catch (IOException ex) { + Main.getDebugHandler().disconnect(); + //ignore } return true; } public boolean stepIntoActionPerformed(ActionEvent evt) { - DebuggerCommands cmd = Main.getDebugHandler().getCommands(); - if (cmd != null) { + try { + DebuggerCommands cmd = Main.getDebugHandler().getCommands(); mainFrame.getPanel().clearDebuggerColors(); cmd.stepInto(); + } catch (IOException ex) { + Main.getDebugHandler().disconnect(); + //ignore } + return true; } public boolean stepOutActionPerformed(ActionEvent evt) { - DebuggerCommands cmd = Main.getDebugHandler().getCommands(); - if (cmd != null) { + try { + DebuggerCommands cmd = Main.getDebugHandler().getCommands(); mainFrame.getPanel().clearDebuggerColors(); + cmd.stepOut(); + } catch (IOException ex) { + Main.getDebugHandler().disconnect(); + //ignore } + return true; } public boolean continueActionPerformed(ActionEvent evt) { - DebuggerCommands cmd = Main.getDebugHandler().getCommands(); - if (cmd != null) { + try { + DebuggerCommands cmd = Main.getDebugHandler().getCommands(); mainFrame.getPanel().clearDebuggerColors(); cmd.sendContinue(); + } catch (IOException ex) { + Main.getDebugHandler().disconnect(); + //ignore } + return true; } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 55f6cf7a2..5e5dc956e 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -84,6 +84,7 @@ import com.jpexs.decompiler.flash.gui.controls.JPersistentSplitPane; import com.jpexs.decompiler.flash.gui.dumpview.DumpTree; import com.jpexs.decompiler.flash.gui.dumpview.DumpTreeModel; import com.jpexs.decompiler.flash.gui.dumpview.DumpViewPanel; +import com.jpexs.decompiler.flash.gui.editor.LineMarkedEditorPane; import com.jpexs.decompiler.flash.gui.helpers.ObservableList; import com.jpexs.decompiler.flash.gui.player.FlashPlayerPanel; import com.jpexs.decompiler.flash.gui.tagtree.TagTree; @@ -1539,10 +1540,16 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } + public void refreshBreakPoints() { + if (abcPanel != null) { + abcPanel.decompiledTextArea.refreshBreakPoints(); + } + } + public void debuggerBreakAt(SWF swf, String cls, int line) { gotoClassLine(swf, cls, line); if (abcPanel != null) { - abcPanel.decompiledTextArea.setLineColor(line - 1, Color.green); + abcPanel.decompiledTextArea.addColorMarker(line, DecompiledEditorPane.FG_IP_COLOR, DecompiledEditorPane.BG_IP_COLOR); } } @@ -2806,7 +2813,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void clearDebuggerColors() { if (abcPanel != null) { - abcPanel.decompiledTextArea.clearLineColors(); + abcPanel.decompiledTextArea.removeColorMarkerOnAllLines(DecompiledEditorPane.FG_IP_COLOR, DecompiledEditorPane.BG_IP_COLOR); } } diff --git a/src/com/jpexs/decompiler/flash/gui/abc/DecompiledEditorPane.java b/src/com/jpexs/decompiler/flash/gui/abc/DecompiledEditorPane.java index b3a6bd1b4..c233b1707 100644 --- a/src/com/jpexs/decompiler/flash/gui/abc/DecompiledEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/abc/DecompiledEditorPane.java @@ -35,6 +35,7 @@ import com.jpexs.decompiler.flash.abc.types.traits.TraitFunction; import com.jpexs.decompiler.flash.abc.types.traits.TraitMethodGetterSetter; import com.jpexs.decompiler.flash.abc.types.traits.TraitSlotConst; import com.jpexs.decompiler.flash.gui.AppStrings; +import com.jpexs.decompiler.flash.gui.Main; import com.jpexs.decompiler.flash.gui.View; import com.jpexs.decompiler.flash.gui.editor.LineMarkedEditorPane; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; @@ -43,18 +44,22 @@ import com.jpexs.decompiler.flash.helpers.hilight.HighlightSpecialType; import com.jpexs.decompiler.flash.helpers.hilight.Highlighting; import com.jpexs.decompiler.flash.tags.ABCContainerTag; import com.jpexs.decompiler.graph.DottedChain; +import java.awt.Color; import java.awt.Point; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.Timer; import java.util.TimerTask; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; +import jsyntaxpane.DefaultSyntaxKit; import jsyntaxpane.SyntaxDocument; import jsyntaxpane.Token; import jsyntaxpane.TokenType; +import jsyntaxpane.components.BreakPointListener; -public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretListener { +public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretListener, BreakPointListener { private List highlights = new ArrayList<>(); @@ -86,6 +91,31 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL private final List scriptListeners = new ArrayList<>(); + public static final Color BG_BREAKPOINT_COLOR = new Color(0xfc, 0x9d, 0x9f); + public static final Color FG_BREAKPOINT_COLOR = null; + + public static final Color BG_IP_COLOR = new Color(0xbd, 0xe6, 0xaa); + public static final Color FG_IP_COLOR = null; + + public static final Color BG_INVALID_BREAKPOINT_COLOR = new Color(0xdc, 0xdc, 0xd8); + public static final Color FG_INVALID_BREAKPOINT_COLOR = null; + + @Override + public void toggled(int line) { + boolean on = Main.toggleBreakPoint(script, line); + removeColorMarker(line, FG_INVALID_BREAKPOINT_COLOR, BG_INVALID_BREAKPOINT_COLOR); + if (on) { + if (Main.isBreakPointValid(script, line)) { + addColorMarker(line, FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR); + } else { + addColorMarker(line, FG_INVALID_BREAKPOINT_COLOR, BG_INVALID_BREAKPOINT_COLOR); + } + } else { + removeColorMarker(line, FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR); + removeColorMarker(line, FG_INVALID_BREAKPOINT_COLOR, BG_INVALID_BREAKPOINT_COLOR); + } + } + public void addScriptListener(Runnable l) { scriptListeners.add(l); } @@ -573,7 +603,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL } } currentMethodHighlight = null; - currentTrait = null; + //currentTrait = null; String name = abc.instance_info.get(classIndex).getName(abc.constants).getNameWithNamespace(abc.constants).toPrintableString(true); currentTrait = getCurrentTrait(); isStatic = abc.isStaticTraitId(classIndex, lastTraitIndex); @@ -599,8 +629,8 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL Highlighting tc = Highlighting.searchIndex(classHighlights, classIndex); if (tc != null || isScriptInit) { - Highlighting th = Highlighting.searchIndex(traitHighlights, traitId, isScriptInit ? 0 : tc.startPos, isScriptInit ? -1 : tc.startPos + tc.len); - int pos; + Highlighting th = Highlighting.searchIndex(traitHighlights, traitId, isScriptInit || tc == null ? 0 : tc.startPos, isScriptInit || tc == null ? -1 : tc.startPos + tc.len); + int pos = 0; if (th != null) { if (th.len > 1) { ignoreCarret = true; @@ -611,7 +641,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL ignoreCarret = false; } pos = th.startPos; - } else { + } else if (tc != null) { pos = tc.startPos; } @@ -705,9 +735,25 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL return script == null ? null : script.abc; } + public void refreshBreakPoints() { + Set bkptLines = Main.getPackBreakPoints(script); + removeColorMarkerOnAllLines(FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR); + removeColorMarkerOnAllLines(FG_INVALID_BREAKPOINT_COLOR, BG_INVALID_BREAKPOINT_COLOR); + + for (int line : bkptLines) { + if (Main.isBreakPointValid(script, line)) { + addColorMarker(line, FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR); + } else { + addColorMarker(line, FG_INVALID_BREAKPOINT_COLOR, BG_INVALID_BREAKPOINT_COLOR); + } + } + } + @Override public void setText(String t) { super.setText(t); setCaretPosition(0); + refreshBreakPoints(); + } } diff --git a/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java b/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java index f41399fe6..3610a25de 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.flash.gui.editor; +import com.jpexs.decompiler.flash.abc.avm2.parser.script.Reference; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.gui.AppStrings; import java.awt.Color; @@ -32,8 +33,11 @@ import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Objects; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.plaf.TextUI; @@ -44,10 +48,17 @@ import javax.swing.text.Element; import javax.swing.text.Highlighter.HighlightPainter; import javax.swing.text.JTextComponent; import javax.swing.text.Position; +import javax.swing.text.Segment; +import javax.swing.text.TabExpander; import javax.swing.text.View; +import jsyntaxpane.DefaultSyntaxKit; import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.SyntaxStyle; import jsyntaxpane.Token; import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.components.BreakPointListener; +import jsyntaxpane.components.LineNumbersRuler; +import jsyntaxpane.components.Markers; /** * @@ -57,6 +68,9 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan private static final int truncateLimit = 2 * 1024 * 1024; + public static final Color BG_SELECTED_LINE = new Color(0xe9, 0xef, 0xf8); + public static final Color BG_ERROR_LINE = new Color(255, 200, 200); + private int lastLine = -1; private boolean error = false; @@ -67,17 +81,109 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan private LinkHandler linkHandler = this; - private Map lineColors = new HashMap<>(); + public static class LineMarker { + + private Color bgColor; + private Color color; + private FgPainter fgPainter; + private int line; + + public FgPainter getForegroundPainter() { + return fgPainter; + } + + public LineMarker(int line, Color color, Color bgColor) { + this.line = line; + this.bgColor = bgColor; + this.color = color; + if (color != null) { + this.fgPainter = new FgPainter(color, bgColor); + } + } + + @Override + public int hashCode() { + int hash = 5; + hash = 17 * hash + Objects.hashCode(this.bgColor); + hash = 17 * hash + Objects.hashCode(this.color); + hash = 17 * hash + this.line; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final LineMarker other = (LineMarker) obj; + if (!Objects.equals(this.bgColor, other.bgColor)) { + return false; + } + if (!Objects.equals(this.color, other.color)) { + return false; + } + return this.line == other.line; + } + + public Color getBgColor() { + return bgColor; + } + + public Color getColor() { + return color; + } + + } + + private Map> lineMarkers = new HashMap<>(); + + public void setLineMarkers(Map> colorMarkers) { + this.lineMarkers = colorMarkers; + } public void clearLineColors() { - lineColors.clear(); + lineMarkers.clear(); repaint(); } - public void setLineColor(int line, Color color) { - lineColors.remove(line); - if (color != null) { - lineColors.put(line, color); + public void removeColorMarker(int line, Color color, Color bgColor) { + if (lineMarkers.containsKey(line)) { + LineMarker lm = new LineMarker(line, color, bgColor); + lineMarkers.get(line).remove(lm); + } + repaint(); + } + + public void removeColorMarkerOnAllLines(Color color, Color bgColor) { + for (int line : lineMarkers.keySet()) { + removeColorMarker(line, color, bgColor); + } + } + + public void toggleColorMarker(int line, Color color, Color bgColor) { + if (!lineMarkers.containsKey(line)) { + addColorMarker(line, color, bgColor); + } else { + if (lineMarkers.get(line).contains(color)) { + removeColorMarker(line, color, bgColor); + } else { + addColorMarker(line, color, bgColor); + } + } + repaint(); + } + + public void addColorMarker(int line, Color color, Color bgColor) { + if (!lineMarkers.containsKey(line)) { + lineMarkers.put(line, new ArrayList<>()); + + } + LineMarker marker = new LineMarker(line, color, bgColor); + if (!lineMarkers.get(line).contains(marker)) { + lineMarkers.get(line).add(marker); } repaint(); } @@ -94,7 +200,7 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan setCaretPosition(ActionUtils.getDocumentPosition(this, line, 0)); } - public void selectLine(int line) { + private void getLineBounds(int line, Reference lineStart, Reference lineEnd) { Document d = getDocument(); String text = ""; try { @@ -103,27 +209,35 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan //ignore } int lineCnt = 1; - int lineStart = 0; - int lineEnd = -1; + int lineStartVal = 0; + int lineEndVal = -1; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '\n') { lineCnt++; if (lineCnt == line) { - lineStart = i + 1; + lineStartVal = i + 1; } if (lineCnt == line + 1) { - lineEnd = i; + lineEndVal = i; } } } if (lineCnt == 1) { - lineEnd = text.length() - 1; + lineEndVal = text.length() - 1; if (line > 1) { - lineStart = text.length() - 1; + lineStartVal = text.length() - 1; } } + lineEnd.setVal(lineEndVal); + lineStart.setVal(lineStartVal); + } - select(lineStart, lineEnd); + public void selectLine(int line) { + Reference lineStart = new Reference<>(0); + Reference lineEnd = new Reference<>(0); + getLineBounds(line, lineStart, lineEnd); + + select(lineStart.getVal(), lineEnd.getVal()); requestFocus(); } @@ -287,15 +401,101 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan } + public void setText(String t, Map> lineMarkers) { + setText(t); + this.lineMarkers = lineMarkers; + repaint(); + } + @Override public void setText(String t) { + this.lineMarkers = new HashMap<>(); lastLine = -1; error = false; if (Configuration.debugMode.get() && t != null && t.length() > truncateLimit) { t = t.substring(0, truncateLimit) + "\r\n" + AppStrings.translate("editorTruncateWarning").replace("%chars%", Integer.toString(truncateLimit)); } super.setText(t); - setCaretPosition(0); //scroll to top + setCaretPosition(0); //scroll to top + } + + public static class FgPainter extends DefaultHighlighter.DefaultHighlightPainter { + + private SyntaxStyle fgStyle; + + public FgPainter(Color color, Color bgColor) { + super(bgColor); + this.fgStyle = new SyntaxStyle(color, false, false); + } + + @Override + public void paint(Graphics g, int offs0, int offs1, Shape bounds, JTextComponent c) { + try { + // --- determine locations --- + TextUI mapper = c.getUI(); + + Segment seg = new Segment(); + ((SyntaxDocument) c.getDocument()).getText(offs0, offs1 - offs0, seg); + + Rectangle r = mapper.modelToView(c, offs0, Position.Bias.Forward); + FontMetrics fm = g.getFontMetrics(); + //int fh = fm.getHeight(); + fgStyle.drawText(seg, r.x, r.y + fm.getAscent(), g, null, offs0); + /*for (int i = offs0; i < offs1; i++) { + + Rectangle r = mapper.modelToView(c, i, Position.Bias.Forward); + Rectangle r1 = mapper.modelToView(c, i + 1, Position.Bias.Forward); + if (r1.y == r.y) { + ((SyntaxDocument) c.getDocument()).getText(i, 1, seg); + fgStyle.drawText(seg, r.x, r.y, g, null, i); + //g.drawLine(r.x, r.y + r.height - 3, r1.x, r.y + r.height - 3); + } + }*/ + + } catch (BadLocationException e) { + // can't render + } + } + + @Override + public Shape paintLayer(Graphics g, int offs0, int offs1, + Shape bounds, JTextComponent c, View view) { + + g.setColor(c.getSelectionColor()); + + Rectangle r; + + if (offs0 == view.getStartOffset() + && offs1 == view.getEndOffset()) { + // Contained in view, can just use bounds. + if (bounds instanceof Rectangle) { + r = (Rectangle) bounds; + } else { + r = bounds.getBounds(); + } + } else { + // Should only render part of View. + try { + // --- determine locations --- + Shape shape = view.modelToView(offs0, Position.Bias.Forward, + offs1, Position.Bias.Backward, + bounds); + r = (shape instanceof Rectangle) + ? (Rectangle) shape : shape.getBounds(); + } catch (BadLocationException e) { + // can't render + r = null; + } + } + + if (r != null) { + r.width = Math.max(r.width, 1); + + paint(g, offs0, offs1, r, c); + } + + return r; + } } public static class UnderLinePainter extends DefaultHighlighter.DefaultHighlightPainter { @@ -381,16 +581,38 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan if (lastLine > 0) { if (error) { - g.setColor(new Color(255, 200, 200)); + g.setColor(BG_ERROR_LINE); } else { - g.setColor(new Color(0xee, 0xee, 0xee)); + g.setColor(BG_SELECTED_LINE); } g.fillRect(0, d + lh * lastLine - 1, getWidth(), lh); } - for (int line : lineColors.keySet()) { - g.setColor(lineColors.get(line)); - g.fillRect(0, d + lh * line - 1, getWidth(), lh); + for (int line : lineMarkers.keySet()) { + List cs = lineMarkers.get(line); + if (cs.isEmpty()) { + continue; + } + LineMarker lastMarker = cs.get(cs.size() - 1); + if (lastMarker.getBgColor() == null) { + continue; + } + g.setColor(lastMarker.getBgColor()); + g.fillRect(0, d + lh * (line - 1), getWidth(), lh); } super.paint(g); + for (int line : lineMarkers.keySet()) { + List cs = lineMarkers.get(line); + if (cs.isEmpty()) { + continue; + } + Reference lineStart = new Reference<>(0); + Reference lineEnd = new Reference<>(0); + getLineBounds(line, lineStart, lineEnd); + FgPainter fgp = cs.get(cs.size() - 1).getForegroundPainter(); + if (fgp != null) { + fgp.paint(g, lineStart.getVal(), lineEnd.getVal(), null, this); + } + } } + }