You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(103) |
Jun
(121) |
Jul
(16) |
Aug
(67) |
Sep
(126) |
Oct
(161) |
Nov
(164) |
Dec
(588) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(394) |
Feb
(181) |
Mar
(131) |
Apr
(180) |
May
(255) |
Jun
(11) |
Jul
(79) |
Aug
(70) |
Sep
(274) |
Oct
(138) |
Nov
(195) |
Dec
(8) |
2008 |
Jan
(3) |
Feb
(142) |
Mar
(162) |
Apr
(124) |
May
(148) |
Jun
(157) |
Jul
(425) |
Aug
(373) |
Sep
(264) |
Oct
(315) |
Nov
(225) |
Dec
(6) |
2009 |
Jan
(67) |
Feb
(78) |
Mar
(279) |
Apr
(294) |
May
(92) |
Jun
(65) |
Jul
(134) |
Aug
(41) |
Sep
(138) |
Oct
(125) |
Nov
(126) |
Dec
(122) |
2010 |
Jan
(15) |
Feb
(48) |
Mar
(9) |
Apr
(195) |
May
(373) |
Jun
(507) |
Jul
(42) |
Aug
(16) |
Sep
(38) |
Oct
(81) |
Nov
(64) |
Dec
(18) |
2011 |
Jan
(13) |
Feb
(12) |
Mar
(39) |
Apr
(1) |
May
(2) |
Jun
(27) |
Jul
(27) |
Aug
(31) |
Sep
(14) |
Oct
(102) |
Nov
(20) |
Dec
(37) |
2012 |
Jan
(22) |
Feb
(1) |
Mar
(1) |
Apr
(2) |
May
(2) |
Jun
(18) |
Jul
(6) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
(1) |
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
(47) |
Jun
(7) |
Jul
(107) |
Aug
|
Sep
|
Oct
(112) |
Nov
(31) |
Dec
(17) |
2014 |
Jan
(29) |
Feb
(111) |
Mar
(34) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(18) |
Dec
(10) |
From: <aki...@us...> - 2014-02-28 09:04:10
|
Revision: 9660 http://sourceforge.net/p/gridarta/code/9660 Author: akirschbaum Date: 2014-02-28 09:04:07 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Inline function calls. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 09:01:58 UTC (rev 9659) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 09:04:07 UTC (rev 9660) @@ -358,7 +358,6 @@ // We don't use yToLine() here because that method doesn't // return lines past the end of the document final int height = fontMetrics.getHeight(); - final int firstLine = textArea.getFirstLine(); final int firstInvalid = firstLine + clipRectangle.y / height; // Because the clipRectangle's height is usually an even multiple // of the font height, we subtract 1 from it, otherwise one @@ -366,7 +365,7 @@ final int lastInvalid = firstLine + (clipRectangle.y + clipRectangle.height - 1) / height; try { - final TokenMarker tokenMarker = textArea.getDocument().getTokenMarker(); + final TokenMarker tokenMarker = selection.getDocument().getTokenMarker(); final int x = textArea.getHorizontalOffset(); for (int line = firstInvalid; line <= lastInvalid; line++) { @@ -461,7 +460,7 @@ currentLineIndex = line; final int y = lineToY(line); - if (line < 0 || line >= textArea.getLineCount()) { + if (line < 0 || line >= selection.getLineCount()) { if (paintInvalid) { paintHighlight(gfx, line, y); styles.getStyle(Token.INVALID).setGraphicsFlags(gfx, font); @@ -485,7 +484,7 @@ */ private void paintPlainLine(@NotNull final Graphics gfx, final int line, @NotNull final Font defaultFont, @NotNull final Color defaultColor, final int x, final int y) { paintHighlight(gfx, line, y); - textArea.getLineText(line, currentLine); + selection.getLineText(line, currentLine); gfx.setFont(defaultFont); gfx.setColor(defaultColor); @@ -510,7 +509,7 @@ * @param y the y-offset for painting */ private void paintSyntaxLine(@NotNull final Graphics gfx, @NotNull final TokenMarker tokenMarker, final int line, @NotNull final Font defaultFont, @NotNull final Color defaultColor, final int x, final int y) { - textArea.getLineText(currentLineIndex, currentLine); + selection.getLineText(currentLineIndex, currentLine); currentLineTokens = tokenMarker.markTokens(currentLine, currentLineIndex); paintHighlight(gfx, line, y); @@ -571,14 +570,14 @@ final int selectionStartLine = selection.getSelectionStartLine(); final int selectionEndLine = selection.getSelectionEndLine(); - final int lineStart = textArea.getLineStartOffset(line); + final int lineStart = selection.getLineStartOffset(line); final int x1; final int x2; if (selection.isSelectionRectangular()) { - final int lineLen = textArea.getLineLength(line); - x1 = textArea.offsetToX2(line, Math.min(lineLen, selectionStart - textArea.getLineStartOffset(selectionStartLine))); - final int x3 = textArea.offsetToX2(line, Math.min(lineLen, selectionEnd - textArea.getLineStartOffset(selectionEndLine))); + final int lineLen = selection.getLineLength(line); + x1 = textArea.offsetToX2(line, Math.min(lineLen, selectionStart - selection.getLineStartOffset(selectionStartLine))); + final int x3 = textArea.offsetToX2(line, Math.min(lineLen, selectionEnd - selection.getLineStartOffset(selectionEndLine))); x2 = x3 + (x1 == x3 ? 1 : 0); } else if (selectionStartLine == selectionEndLine) { x1 = textArea.offsetToX2(line, selectionStart - lineStart); @@ -628,7 +627,7 @@ */ private void paintCaret(@NotNull final Graphics gfx, final int line, final int y) { if (caret.isCaretVisible()) { - final int offset = selection.getCaretPosition() - textArea.getLineStartOffset(line); + final int offset = selection.getCaretPosition() - selection.getLineStartOffset(line); final int caretX = textArea.offsetToX2(line, offset); final int caretWidth = blockCaret || textArea.isOverwriteEnabled() ? fontMetrics.charWidth('w') : 1; final int yy = y + fontMetrics.getLeading() + fontMetrics.getMaxDescent(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 09:02:05
|
Revision: 9659 http://sourceforge.net/p/gridarta/code/9659 Author: akirschbaum Date: 2014-02-28 09:01:58 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Move code from JEditTextArea to TextAreaPainter. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 09:00:20 UTC (rev 9658) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 09:01:58 UTC (rev 9659) @@ -484,8 +484,7 @@ * @param line the line */ public int lineToY(final int line) { - final FontMetrics fm = painter.getFontMetrics(); - return (line - painter.getFirstLine()) * fm.getHeight() - (fm.getLeading() + fm.getMaxDescent()); + return painter.lineToY(line); } /** Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 09:00:20 UTC (rev 9658) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 09:01:58 UTC (rev 9659) @@ -387,7 +387,7 @@ * @param line the line to invalidate */ public void invalidateLine(final int line) { - repaint(0, textArea.lineToY(line) + fontMetrics.getMaxDescent() + fontMetrics.getLeading(), getWidth(), fontMetrics.getHeight()); + repaint(0, lineToY(line) + fontMetrics.getMaxDescent() + fontMetrics.getLeading(), getWidth(), fontMetrics.getHeight()); } /** @@ -396,7 +396,7 @@ * @param lastLine the last line to invalidate */ public void invalidateLineRange(final int firstLine, final int lastLine) { - repaint(0, textArea.lineToY(firstLine) + fontMetrics.getMaxDescent() + fontMetrics.getLeading(), getWidth(), (lastLine - firstLine + 1) * fontMetrics.getHeight()); + repaint(0, lineToY(firstLine) + fontMetrics.getMaxDescent() + fontMetrics.getLeading(), getWidth(), (lastLine - firstLine + 1) * fontMetrics.getHeight()); } /** @@ -459,7 +459,7 @@ final Color foreground = getForeground(); currentLineIndex = line; - final int y = textArea.lineToY(line); + final int y = lineToY(line); if (line < 0 || line >= textArea.getLineCount()) { if (paintInvalid) { @@ -723,4 +723,12 @@ return true; } + /** + * Converts a line index to a y co-ordinate. + * @param line the line + */ + public int lineToY(final int line) { + return (line - firstLine) * fontMetrics.getHeight() - (fontMetrics.getLeading() + fontMetrics.getMaxDescent()); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 09:00:23
|
Revision: 9658 http://sourceforge.net/p/gridarta/code/9658 Author: akirschbaum Date: 2014-02-28 09:00:20 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Move code from JEditTextArea to TextAreaPainter. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:55:11 UTC (rev 9657) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 09:00:20 UTC (rev 9658) @@ -122,8 +122,6 @@ private final boolean editable; - private int firstLine; - private final int electricScroll; private int horizontalOffset; @@ -318,7 +316,7 @@ public void updateScrollBars() { final int visibleLines = getVisibleLines(); if (visibleLines != 0) { - vertical.setValues(firstLine, visibleLines, 0, selection.getLineCount()); + vertical.setValues(painter.getFirstLine(), visibleLines, 0, selection.getLineCount()); //vertical.setUnitIncrement(2); vertical.setUnitIncrement(1); // scroll one line per click vertical.setBlockIncrement(visibleLines); @@ -337,7 +335,7 @@ * Returns the line displayed at the text area's origin. */ public int getFirstLine() { - return firstLine; + return painter.getFirstLine(); } /** @@ -345,11 +343,10 @@ * scroll bars. */ public void setFirstLine(final int firstLine) { - if (firstLine == this.firstLine) { + if (!painter.setFirstLine(firstLine)) { return; } - this.firstLine = firstLine; if (firstLine != vertical.getValue()) { updateScrollBars(); } @@ -401,8 +398,7 @@ changed = true; } - if (firstLine != this.firstLine) { - this.firstLine = firstLine; + if (painter.setFirstLine(firstLine)) { changed = true; } @@ -456,12 +452,12 @@ return; } - int newFirstLine = firstLine; + int newFirstLine = painter.getFirstLine(); int newHorizontalOffset = horizontalOffset; - if (line < firstLine + electricScroll) { + if (line < newFirstLine + electricScroll) { newFirstLine = Math.max(0, line - electricScroll); - } else if (line + electricScroll >= firstLine + visibleLines) { + } else if (line + electricScroll >= newFirstLine + visibleLines) { newFirstLine = (line - visibleLines) + electricScroll + 1; if (newFirstLine + visibleLines >= selection.getLineCount()) { newFirstLine = selection.getLineCount() - visibleLines; @@ -489,7 +485,7 @@ */ public int lineToY(final int line) { final FontMetrics fm = painter.getFontMetrics(); - return (line - firstLine) * fm.getHeight() - (fm.getLeading() + fm.getMaxDescent()); + return (line - painter.getFirstLine()) * fm.getHeight() - (fm.getLeading() + fm.getMaxDescent()); } /** @@ -499,7 +495,7 @@ public int yToLine(final int y) { final FontMetrics fm = painter.getFontMetrics(); final int height = fm.getHeight(); - return Math.max(0, Math.min(selection.getLineCount() - 1, y / height + firstLine)); + return Math.max(0, Math.min(selection.getLineCount() - 1, y / height + painter.getFirstLine())); } /** @@ -1163,13 +1159,16 @@ final int line = selection.getLineOfOffset(evt.getOffset()); if (count == 0) { painter.invalidateLine(line); - } else if (line < firstLine) { - // do magic stuff - setFirstLine(firstLine + count); - // end of magic stuff } else { - painter.invalidateLineRange(line, firstLine + getVisibleLines()); - updateScrollBars(); + final int firstLine = painter.getFirstLine(); + if (line < firstLine) { + // do magic stuff + setFirstLine(firstLine + count); + // end of magic stuff + } else { + painter.invalidateLineRange(line, firstLine + getVisibleLines()); + updateScrollBars(); + } } } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 08:55:11 UTC (rev 9657) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 09:00:20 UTC (rev 9658) @@ -202,6 +202,8 @@ private int visibleLines; + private int firstLine; + /** * Creates a new repaint manager. This should be not be called directly. * @param textArea the associated text area that is painted @@ -705,4 +707,20 @@ return visibleLines; } + /** + * Returns the line displayed at the text area's origin. + */ + public int getFirstLine() { + return firstLine; + } + + public boolean setFirstLine(final int firstLine) { + if (firstLine == this.firstLine) { + return false; + } + + this.firstLine = firstLine; + return true; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:55:16
|
Revision: 9657 http://sourceforge.net/p/gridarta/code/9657 Author: akirschbaum Date: 2014-02-28 08:55:11 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Move code from JEditTextArea to TextAreaPainter. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:43:48 UTC (rev 9656) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:55:11 UTC (rev 9657) @@ -124,8 +124,6 @@ private int firstLine; - private int visibleLines; - private final int electricScroll; private int horizontalOffset; @@ -318,6 +316,7 @@ * changes. */ public void updateScrollBars() { + final int visibleLines = getVisibleLines(); if (visibleLines != 0) { vertical.setValues(firstLine, visibleLines, 0, selection.getLineCount()); //vertical.setUnitIncrement(2); @@ -361,29 +360,10 @@ * Returns the number of lines visible in this text area. */ public int getVisibleLines() { - return visibleLines; + return painter.getVisibleLines(); } /** - * Recalculates the number of visible lines. This should not be called - * directly. - */ - public void recalculateVisibleLines() { - final int height = painter.getHeight(); - - // get line height - final int lineHeight; - if (painter.getFontMetrics() == null) { - lineHeight = painter.getDefaultLineHeight(); // default height might be wrong, take it only when needed - } else { - lineHeight = painter.getFontMetrics().getHeight(); - } - - visibleLines = height / lineHeight; - updateScrollBars(); - } - - /** * Returns the horizontal offset of drawn lines. */ public int getHorizontalOffset() { @@ -470,6 +450,7 @@ // visibleLines == 0 before the component is realized // we can't do any proper scrolling then, so we have // this hack... + final int visibleLines = getVisibleLines(); if (visibleLines == 0) { setFirstLine(Math.max(0, line - electricScroll)); return; @@ -1187,7 +1168,7 @@ setFirstLine(firstLine + count); // end of magic stuff } else { - painter.invalidateLineRange(line, firstLine + visibleLines); + painter.invalidateLineRange(line, firstLine + getVisibleLines()); updateScrollBars(); } } @@ -1251,7 +1232,7 @@ @Override public void componentResized(@NotNull final ComponentEvent e) { - recalculateVisibleLines(); + painter.recalculateVisibleLines(); scrollBarsInitialized = true; } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 08:43:48 UTC (rev 9656) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 08:55:11 UTC (rev 9657) @@ -200,6 +200,8 @@ */ private int defaultCharWidth; + private int visibleLines; + /** * Creates a new repaint manager. This should be not be called directly. * @param textArea the associated text area that is painted @@ -335,7 +337,7 @@ public final void setFont(@NotNull final Font font) { super.setFont(font); fontMetrics = getFontMetrics(font); - textArea.recalculateVisibleLines(); + recalculateVisibleLines(); } /** @@ -680,4 +682,27 @@ currentLineTokens = tokens == null ? null : new LinkedList<Token>(tokens); } + /** + * Recalculates the number of visible lines. This should not be called + * directly. + */ + public void recalculateVisibleLines() { + final int height = getHeight(); + + // get line height + final int lineHeight; + if (fontMetrics == null) { + lineHeight = getDefaultLineHeight(); // default height might be wrong, take it only when needed + } else { + lineHeight = fontMetrics.getHeight(); + } + + visibleLines = height / lineHeight; + textArea.updateScrollBars(); + } + + public int getVisibleLines() { + return visibleLines; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:43:51
|
Revision: 9656 http://sourceforge.net/p/gridarta/code/9656 Author: akirschbaum Date: 2014-02-28 08:43:48 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Move code form JEditTextArea to TextAreaSelection. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:37:21 UTC (rev 9655) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:43:48 UTC (rev 9656) @@ -48,7 +48,6 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; -import javax.swing.text.Element; import javax.swing.text.Segment; import javax.swing.text.Utilities; import javax.swing.undo.AbstractUndoableEdit; @@ -320,7 +319,7 @@ */ public void updateScrollBars() { if (visibleLines != 0) { - vertical.setValues(firstLine, visibleLines, 0, getLineCount()); + vertical.setValues(firstLine, visibleLines, 0, selection.getLineCount()); //vertical.setUnitIncrement(2); vertical.setUnitIncrement(1); // scroll one line per click vertical.setBlockIncrement(visibleLines); @@ -439,8 +438,8 @@ */ public void scrollToCaret() { final int line = selection.getCaretLine(); - final int lineStart = getLineStartOffset(line); - final int offset = Math.max(0, Math.min(getLineLength(line) - 1, selection.getCaretPosition() - lineStart)); + final int lineStart = selection.getLineStartOffset(line); + final int offset = Math.max(0, Math.min(selection.getLineLength(line) - 1, selection.getCaretPosition() - lineStart)); scrollTo(line, offset); } @@ -483,8 +482,8 @@ newFirstLine = Math.max(0, line - electricScroll); } else if (line + electricScroll >= firstLine + visibleLines) { newFirstLine = (line - visibleLines) + electricScroll + 1; - if (newFirstLine + visibleLines >= getLineCount()) { - newFirstLine = getLineCount() - visibleLines; + if (newFirstLine + visibleLines >= selection.getLineCount()) { + newFirstLine = selection.getLineCount() - visibleLines; } if (newFirstLine < 0) { newFirstLine = 0; @@ -519,7 +518,7 @@ public int yToLine(final int y) { final FontMetrics fm = painter.getFontMetrics(); final int height = fm.getHeight(); - return Math.max(0, Math.min(getLineCount() - 1, y / height + firstLine)); + return Math.max(0, Math.min(selection.getLineCount() - 1, y / height + firstLine)); } /** @@ -542,12 +541,12 @@ * @param offset the offset, from the start of the line */ public int offsetToX2(final int line, final int offset) { - final TokenMarker tokenMarker = getTokenMarker(); + final TokenMarker tokenMarker = selection.getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); - getLineText(line, lineSegment); + selection.getLineText(line, lineSegment); final int segmentOffset = lineSegment.offset; int x = horizontalOffset; @@ -599,12 +598,12 @@ * @param x the x co-ordinate */ public int xToOffset(final int line, final int x) { - final TokenMarker tokenMarker = getTokenMarker(); + final TokenMarker tokenMarker = selection.getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); - getLineText(line, lineSegment); + selection.getLineText(line, lineSegment); final char[] segmentArray = lineSegment.array; final int segmentOffset = lineSegment.offset; @@ -695,7 +694,7 @@ */ public int xyToOffset(final int x, final int y) { final int line = yToLine(y); - final int start = getLineStartOffset(line); + final int start = selection.getLineStartOffset(line); return start + xToOffset(line, x); } @@ -704,54 +703,32 @@ */ @NotNull public SyntaxDocument getDocument() { - return document; + return selection.getDocument(); } /** - * Returns the document's token marker. Equivalent to calling {@code - * getDocument().getTokenMarker()}. - */ - @Nullable - public TokenMarker getTokenMarker() { - return document.getTokenMarker(); - } - - /** * Returns the length of the document. Equivalent to calling {@code * getDocument().getLength()}. */ public int getDocumentLength() { - return document.getLength(); + return selection.getDocumentLength(); } /** * Returns the number of lines in the document. */ public int getLineCount() { - return document.getDefaultRootElement().getElementCount(); + return selection.getLineCount(); } /** - * Returns the line containing the specified offset. - * @param offset the offset - */ - public int getLineOfOffset(final int offset) { - return document.getDefaultRootElement().getElementIndex(offset); - } - - /** * Returns the start offset of the specified line. * @param line the line * @return the start offset of the specified line, or -1 if the line is * invalid */ public int getLineStartOffset(final int line) { - final Element lineElement = document.getDefaultRootElement().getElement(line); - if (lineElement == null) { - return -1; - } else { - return lineElement.getStartOffset(); - } + return selection.getLineStartOffset(line); } /** @@ -761,12 +738,7 @@ * invalid */ public int getLineEndOffset(final int line) { - final Element lineElement = document.getDefaultRootElement().getElement(line); - if (lineElement == null) { - return -1; - } else { - return lineElement.getEndOffset(); - } + return selection.getLineEndOffset(line); } /** @@ -774,12 +746,7 @@ * @param line the line */ public int getLineLength(final int line) { - final Element lineElement = document.getDefaultRootElement().getElement(line); - if (lineElement == null) { - return -1; - } else { - return lineElement.getEndOffset() - lineElement.getStartOffset() - 1; - } + return selection.getLineLength(line); } /** @@ -787,27 +754,14 @@ */ @NotNull public String getText() { - try { - return document.getText(0, document.getLength()); - } catch (final BadLocationException bl) { - bl.printStackTrace(); - return ""; - } + return selection.getText(); } /** * Sets the entire text of this text area. */ public void setText(@NotNull final String text) { - try { - SyntaxDocument.beginCompoundEdit(); - document.remove(0, document.getLength()); - document.insertString(0, text, null); - } catch (final BadLocationException bl) { - bl.printStackTrace(); - } finally { - SyntaxDocument.endCompoundEdit(); - } + selection.setText(text); } /** @@ -839,8 +793,7 @@ */ @NotNull public CharSequence getLineText(final int lineIndex) { - final int start = getLineStartOffset(lineIndex); - return getText(start, getLineEndOffset(lineIndex) - start - 1); + return selection.getLineText(lineIndex); } /** @@ -849,8 +802,7 @@ * @param lineIndex the line */ public void getLineText(final int lineIndex, @NotNull final Segment segment) { - final int start = getLineStartOffset(lineIndex); - getText(start, getLineEndOffset(lineIndex) - start - 1, segment); + selection.getLineText(lineIndex, segment); } /** @@ -938,8 +890,8 @@ // do all this crap, however we still do the stuff at // the end (clearing magic position, scrolling) if (newStart != selection.getSelectionStart() || newEnd != selection.getSelectionEnd() || newBias != selection.getBiasLeft()) { - final int newStartLine = getLineOfOffset(newStart); - final int newEndLine = getLineOfOffset(newEnd); + final int newStartLine = selection.getLineOfOffset(newStart); + final int newEndLine = selection.getLineOfOffset(newEnd); if (painter.isBracketHighlightEnabled()) { if (bracketLine != -1) { @@ -1035,7 +987,7 @@ // Don't overstrike if we're on the end of // the line final int caret = selection.getCaretPosition(); - final int caretLineEnd = getLineEndOffset(selection.getCaretLine()); + final int caretLineEnd = selection.getLineEndOffset(selection.getCaretLine()); if (caretLineEnd - caret <= str.length()) { setSelectedText(str); return; @@ -1121,7 +1073,7 @@ if (selection.getSelectionStart() != selection.getSelectionEnd()) { final Clipboard clipboard = getToolkit().getSystemClipboard(); - final String selection = getSelectedText(); + final String selection = this.selection.getSelectedText(); final int repeatCount = inputHandler.getRepeatCount(); final StringBuilder buf = new StringBuilder(); @@ -1205,8 +1157,8 @@ try { final int offset = TextUtilities.findMatchingBracket(document, newCaretPosition - 1); if (offset != -1) { - bracketLine = getLineOfOffset(offset); - bracketPosition = offset - getLineStartOffset(bracketLine); + bracketLine = selection.getLineOfOffset(offset); + bracketPosition = offset - selection.getLineStartOffset(bracketLine); return; } } catch (final BadLocationException bl) { @@ -1227,7 +1179,7 @@ count = ch.getChildrenAdded().length - ch.getChildrenRemoved().length; } - final int line = getLineOfOffset(evt.getOffset()); + final int line = selection.getLineOfOffset(evt.getOffset()); if (count == 0) { painter.invalidateLine(line); } else if (line < firstLine) { @@ -1247,14 +1199,14 @@ * false} if it is unmodified */ public boolean isModified() { - return !unmodifiedText.equals(getText()); + return !unmodifiedText.equals(selection.getText()); } /** * Reset the "modified" state. */ public void resetModified() { - unmodifiedText = getText(); + unmodifiedText = selection.getText(); } private static class CaretBlinker implements ActionListener { @@ -1427,7 +1379,7 @@ final int line = yToLine(e.getY()); final int offset = xToOffset(line, e.getX()); - final int dot = getLineStartOffset(line) + offset; + final int dot = selection.getLineStartOffset(line) + offset; switch (e.getClickCount()) { case 1: @@ -1464,7 +1416,7 @@ private void doDoubleClick(final int line, final int offset, final int dot) { // Ignore empty lines - if (getLineLength(line) == 0) { + if (selection.getLineLength(line) == 0) { return; } @@ -1485,7 +1437,7 @@ } // Ok, it's not a bracket... select the word - final CharSequence lineText = getLineText(line); + final CharSequence lineText = selection.getLineText(line); char ch = lineText.charAt(Math.max(0, offset - 1)); String noWordSep = (String) document.getProperty("noWordSep"); @@ -1516,7 +1468,7 @@ } } - final int lineStart = getLineStartOffset(line); + final int lineStart = selection.getLineStartOffset(line); select(lineStart + wordStart, lineStart + wordEnd); /* @@ -1531,7 +1483,7 @@ } private void doTripleClick(final int line) { - select(getLineStartOffset(line), getLineEndOffset(line) - 1); + select(selection.getLineStartOffset(line), selection.getLineEndOffset(line) - 1); } } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java 2014-02-28 08:37:21 UTC (rev 9655) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java 2014-02-28 08:43:48 UTC (rev 9656) @@ -20,19 +20,19 @@ package net.sf.gridarta.textedit.textarea; import javax.swing.text.BadLocationException; -import javax.swing.text.Document; import javax.swing.text.Element; import javax.swing.text.Segment; +import net.sf.gridarta.textedit.textarea.tokenmarker.TokenMarker; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class TextAreaSelection { /** - * The {@link Document} this selection is part of. + * The {@link SyntaxDocument} this selection is part of. */ @NotNull - private final Document document; + private final SyntaxDocument document; private int selectionStart; @@ -50,7 +50,7 @@ * Creates a new instance. * @param document the document to select in */ - public TextAreaSelection(@NotNull final Document document) { + public TextAreaSelection(@NotNull final SyntaxDocument document) { this.document = document; } @@ -291,4 +291,136 @@ this.rectangleSelect = rectangleSelect; } + /** + * Returns the document this text area is editing. + */ + @NotNull + public SyntaxDocument getDocument() { + return document; + } + + /** + * Returns the document's token marker. Equivalent to calling {@code + * getDocument().getTokenMarker()}. + */ + @Nullable + public TokenMarker getTokenMarker() { + return document.getTokenMarker(); + } + + /** + * Returns the length of the document. Equivalent to calling {@code + * getDocument().getLength()}. + */ + public int getDocumentLength() { + return document.getLength(); + } + + /** + * Returns the number of lines in the document. + */ + public int getLineCount() { + return document.getDefaultRootElement().getElementCount(); + } + + /** + * Returns the line containing the specified offset. + * @param offset the offset + */ + public int getLineOfOffset(final int offset) { + return document.getDefaultRootElement().getElementIndex(offset); + } + + /** + * Returns the start offset of the specified line. + * @param line the line + * @return the start offset of the specified line, or -1 if the line is + * invalid + */ + public int getLineStartOffset(final int line) { + final Element lineElement = document.getDefaultRootElement().getElement(line); + if (lineElement == null) { + return -1; + } else { + return lineElement.getStartOffset(); + } + } + + /** + * Returns the end offset of the specified line. + * @param line the line + * @return the end offset of the specified line, or -1 if the line is + * invalid + */ + public int getLineEndOffset(final int line) { + final Element lineElement = document.getDefaultRootElement().getElement(line); + if (lineElement == null) { + return -1; + } else { + return lineElement.getEndOffset(); + } + } + + /** + * Returns the length of the specified line. + * @param line the line + */ + public int getLineLength(final int line) { + final Element lineElement = document.getDefaultRootElement().getElement(line); + if (lineElement == null) { + return -1; + } else { + return lineElement.getEndOffset() - lineElement.getStartOffset() - 1; + } + } + + /** + * Returns the entire text of this text area. + */ + @NotNull + public String getText() { + try { + return document.getText(0, document.getLength()); + } catch (final BadLocationException bl) { + bl.printStackTrace(); + return ""; + } + } + + /** + * Sets the entire text of this text area. + */ + public void setText(@NotNull final String text) { + try { + SyntaxDocument.beginCompoundEdit(); + document.remove(0, document.getLength()); + document.insertString(0, text, null); + } catch (final BadLocationException bl) { + bl.printStackTrace(); + } finally { + SyntaxDocument.endCompoundEdit(); + } + } + + /** + * Returns the text on the specified line. + * @param lineIndex the line + * @return the text, or null if the line is invalid + */ + @NotNull + public CharSequence getLineText(final int lineIndex) { + final int start = getLineStartOffset(lineIndex); + return getText(start, getLineEndOffset(lineIndex) - start - 1); + } + + /** + * Copies the text on the specified line into a segment. If the line is + * invalid, the segment will contain a null string. + * @param lineIndex the line + */ + public void getLineText(final int lineIndex, @NotNull final Segment segment) { + final int start = getLineStartOffset(lineIndex); + getText(start, getLineEndOffset(lineIndex) - start - 1, segment); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:37:25
|
Revision: 9655 http://sourceforge.net/p/gridarta/code/9655 Author: akirschbaum Date: 2014-02-28 08:37:21 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Revert previous commit. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:29:40 UTC (rev 9654) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:37:21 UTC (rev 9655) @@ -542,7 +542,7 @@ * @param offset the offset, from the start of the line */ public int offsetToX2(final int line, final int offset) { - final TokenMarker tokenMarker = document.getTokenMarker(); + final TokenMarker tokenMarker = getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); @@ -599,7 +599,7 @@ * @param x the x co-ordinate */ public int xToOffset(final int line, final int x) { - final TokenMarker tokenMarker = document.getTokenMarker(); + final TokenMarker tokenMarker = getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); @@ -708,6 +708,15 @@ } /** + * Returns the document's token marker. Equivalent to calling {@code + * getDocument().getTokenMarker()}. + */ + @Nullable + public TokenMarker getTokenMarker() { + return document.getTokenMarker(); + } + + /** * Returns the length of the document. Equivalent to calling {@code * getDocument().getLength()}. */ @@ -897,7 +906,7 @@ * Selects all text in the document. */ public void selectAll() { - select(0, document.getLength()); + select(0, getDocumentLength()); } /** @@ -921,7 +930,7 @@ newBias = true; } - if (newStart < 0 || newEnd > document.getLength()) { + if (newStart < 0 || newEnd > getDocumentLength()) { throw new IllegalArgumentException("Bounds out of range: " + newStart + ", " + newEnd); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:29:46
|
Revision: 9654 http://sourceforge.net/p/gridarta/code/9654 Author: akirschbaum Date: 2014-02-28 08:29:40 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Inline function calls. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:26:56 UTC (rev 9653) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:29:40 UTC (rev 9654) @@ -542,7 +542,7 @@ * @param offset the offset, from the start of the line */ public int offsetToX2(final int line, final int offset) { - final TokenMarker tokenMarker = getTokenMarker(); + final TokenMarker tokenMarker = document.getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); @@ -599,7 +599,7 @@ * @param x the x co-ordinate */ public int xToOffset(final int line, final int x) { - final TokenMarker tokenMarker = getTokenMarker(); + final TokenMarker tokenMarker = document.getTokenMarker(); /* Use painter's cached info for speed */ FontMetrics fm = painter.getFontMetrics(); @@ -708,15 +708,6 @@ } /** - * Returns the document's token marker. Equivalent to calling {@code - * getDocument().getTokenMarker()}. - */ - @Nullable - public TokenMarker getTokenMarker() { - return document.getTokenMarker(); - } - - /** * Returns the length of the document. Equivalent to calling {@code * getDocument().getLength()}. */ @@ -906,7 +897,7 @@ * Selects all text in the document. */ public void selectAll() { - select(0, getDocumentLength()); + select(0, document.getLength()); } /** @@ -930,7 +921,7 @@ newBias = true; } - if (newStart < 0 || newEnd > getDocumentLength()) { + if (newStart < 0 || newEnd > document.getLength()) { throw new IllegalArgumentException("Bounds out of range: " + newStart + ", " + newEnd); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:27:02
|
Revision: 9653 http://sourceforge.net/p/gridarta/code/9653 Author: akirschbaum Date: 2014-02-28 08:26:56 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Replace calls to JEditTextArea with calls to TextAreaSelection. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:16:30 UTC (rev 9652) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:26:56 UTC (rev 9653) @@ -172,7 +172,8 @@ // Initialize some misc. stuff caret = new TextAreaCaret(defaults.getCaretVisible(), defaults.getCaretBlinks()); - painter = new TextAreaPainter(this, caret, defaults); + selection = new TextAreaSelection(document); + painter = new TextAreaPainter(this, selection, caret, defaults); documentHandler = new DocumentHandler(); lineSegment = new Segment(); bracketLine = -1; @@ -200,7 +201,6 @@ document.addDocumentListener(documentHandler); select(0, 0); updateScrollBars(); - selection = new TextAreaSelection(document); editable = defaults.getEditable(); electricScroll = defaults.getElectricScroll(); @@ -861,13 +861,6 @@ } /** - * Returns the selection start line. - */ - public int getSelectionStartLine() { - return selection.getSelectionStartLine(); - } - - /** * Returns the selection end offset. */ public int getSelectionEnd() { @@ -875,13 +868,6 @@ } /** - * Returns the selection end line. - */ - public int getSelectionEndLine() { - return selection.getSelectionEndLine(); - } - - /** * Returns the caret position. This will either be the selection start or * the selection end, depending on which direction the selection was made * in. Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 08:16:30 UTC (rev 9652) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 08:26:56 UTC (rev 9653) @@ -63,6 +63,9 @@ private final JEditTextArea textArea; @NotNull + private final TextAreaSelection selection; + + @NotNull private final TextAreaCaret caret; /** @@ -202,8 +205,9 @@ * @param textArea the associated text area that is painted * @param defaults the text attributes to use */ - public TextAreaPainter(@NotNull final JEditTextArea textArea, @NotNull final TextAreaCaret caret, @NotNull final TextAreaDefaults defaults) { + public TextAreaPainter(@NotNull final JEditTextArea textArea, @NotNull final TextAreaSelection selection, @NotNull final TextAreaCaret caret, @NotNull final TextAreaDefaults defaults) { this.textArea = textArea; + this.selection = selection; this.caret = caret; setAutoscrolls(true); @@ -395,7 +399,7 @@ * Repaints the lines containing the selection. */ public void invalidateSelectedLines() { - invalidateLineRange(textArea.getSelectionStartLine(), textArea.getSelectionEndLine()); + invalidateLineRange(selection.getSelectionStartLine(), selection.getSelectionEndLine()); } /** @@ -527,7 +531,7 @@ * @param y the y-offset for painting */ private void paintHighlight(@NotNull final Graphics gfx, final int line, final int y) { - if (line >= textArea.getSelectionStartLine() && line <= textArea.getSelectionEndLine()) { + if (line >= selection.getSelectionStartLine() && line <= selection.getSelectionEndLine()) { paintLineHighlight(gfx, line, y); } @@ -535,7 +539,7 @@ paintBracketHighlight(gfx, line, y); } - if (line == textArea.getCaretLine()) { + if (line == selection.getCaretLine()) { paintCaret(gfx, line, y); // CARET gets drawn at this point (if currently visible) } } @@ -550,8 +554,8 @@ final int height = fontMetrics.getHeight(); final int yy = y + fontMetrics.getLeading() + fontMetrics.getMaxDescent(); - final int selectionStart = textArea.getSelectionStart(); - final int selectionEnd = textArea.getSelectionEnd(); + final int selectionStart = selection.getSelectionStart(); + final int selectionEnd = selection.getSelectionEnd(); if (selectionStart == selectionEnd) { if (lineHighlight) { @@ -561,13 +565,13 @@ } else { gfx.setColor(selectionColor); - final int selectionStartLine = textArea.getSelectionStartLine(); - final int selectionEndLine = textArea.getSelectionEndLine(); + final int selectionStartLine = selection.getSelectionStartLine(); + final int selectionEndLine = selection.getSelectionEndLine(); final int lineStart = textArea.getLineStartOffset(line); final int x1; final int x2; - if (textArea.isSelectionRectangular()) { + if (selection.isSelectionRectangular()) { final int lineLen = textArea.getLineLength(line); x1 = textArea.offsetToX2(line, Math.min(lineLen, selectionStart - textArea.getLineStartOffset(selectionStartLine))); final int x3 = textArea.offsetToX2(line, Math.min(lineLen, selectionEnd - textArea.getLineStartOffset(selectionEndLine))); @@ -620,7 +624,7 @@ */ private void paintCaret(@NotNull final Graphics gfx, final int line, final int y) { if (caret.isCaretVisible()) { - final int offset = textArea.getCaretPosition() - textArea.getLineStartOffset(line); + final int offset = selection.getCaretPosition() - textArea.getLineStartOffset(line); final int caretX = textArea.offsetToX2(line, offset); final int caretWidth = blockCaret || textArea.isOverwriteEnabled() ? fontMetrics.charWidth('w') : 1; final int yy = y + fontMetrics.getLeading() + fontMetrics.getMaxDescent(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 08:16:37
|
Revision: 9652 http://sourceforge.net/p/gridarta/code/9652 Author: akirschbaum Date: 2014-02-28 08:16:30 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Extract TextAreaSelection from JEditTextArea. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Added Paths: ----------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 07:50:30 UTC (rev 9651) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 08:16:30 UTC (rev 9652) @@ -151,16 +151,9 @@ @NotNull private final Segment lineSegment; - private int selectionStart; + @NotNull + private final TextAreaSelection selection; - private int selectionStartLine; - - private int selectionEnd; - - private int selectionEndLine; - - private boolean biasLeft; - private int bracketPosition; private int bracketLine; @@ -169,8 +162,6 @@ private boolean overwrite; - private boolean rectangleSelect; - /** * Creates a new JEditTextArea with the specified settings. * @param defaults the default settings @@ -209,6 +200,7 @@ document.addDocumentListener(documentHandler); select(0, 0); updateScrollBars(); + selection = new TextAreaSelection(document); editable = defaults.getEditable(); electricScroll = defaults.getElectricScroll(); @@ -446,9 +438,9 @@ * necessary. */ public void scrollToCaret() { - final int line = getCaretLine(); + final int line = selection.getCaretLine(); final int lineStart = getLineStartOffset(line); - final int offset = Math.max(0, Math.min(getLineLength(line) - 1, getCaretPosition() - lineStart)); + final int offset = Math.max(0, Math.min(getLineLength(line) - 1, selection.getCaretPosition() - lineStart)); scrollTo(line, offset); } @@ -826,12 +818,7 @@ */ @Nullable public String getText(final int start, final int len) { - try { - return document.getText(start, len); - } catch (final BadLocationException bl) { - bl.printStackTrace(); - return null; - } + return selection.getText(start, len); } /** @@ -842,13 +829,7 @@ * @param segment the segment */ public void getText(final int start, final int len, @NotNull final Segment segment) { - try { - document.getText(start, len, segment); - } catch (final BadLocationException bl) { - bl.printStackTrace(); - segment.offset = 0; - segment.count = 0; - } + selection.getText(start, len, segment); } /** @@ -876,28 +857,28 @@ * Returns the selection start offset. */ public int getSelectionStart() { - return selectionStart; + return selection.getSelectionStart(); } /** * Returns the selection start line. */ public int getSelectionStartLine() { - return selectionStartLine; + return selection.getSelectionStartLine(); } /** * Returns the selection end offset. */ public int getSelectionEnd() { - return selectionEnd; + return selection.getSelectionEnd(); } /** * Returns the selection end line. */ public int getSelectionEndLine() { - return selectionEndLine; + return selection.getSelectionEndLine(); } /** @@ -906,14 +887,14 @@ * in. */ public int getCaretPosition() { - return biasLeft ? selectionStart : selectionEnd; + return selection.getCaretPosition(); } /** * Returns the caret line. */ public int getCaretLine() { - return biasLeft ? selectionStartLine : selectionEndLine; + return selection.getCaretLine(); } /** @@ -922,7 +903,7 @@ * @see #getCaretPosition() */ public int getMarkPosition() { - return biasLeft ? selectionEnd : selectionStart; + return selection.getMarkPosition(); } /** @@ -970,7 +951,7 @@ // If the new position is the same as the old, we don't // do all this crap, however we still do the stuff at // the end (clearing magic position, scrolling) - if (newStart != selectionStart || newEnd != selectionEnd || newBias != biasLeft) { + if (newStart != selection.getSelectionStart() || newEnd != selection.getSelectionEnd() || newBias != selection.getBiasLeft()) { final int newStartLine = getLineOfOffset(newStart); final int newEndLine = getLineOfOffset(newEnd); @@ -985,16 +966,11 @@ } } - painter.invalidateLineRange(selectionStartLine, selectionEndLine); + painter.invalidateLineRange(selection.getSelectionStartLine(), selection.getSelectionEndLine()); painter.invalidateLineRange(newStartLine, newEndLine); - SyntaxDocument.addUndoableEdit(new CaretUndo(selectionStart, selectionEnd)); - - selectionStart = newStart; - selectionEnd = newEnd; - selectionStartLine = newStartLine; - selectionEndLine = newEndLine; - biasLeft = newBias; + SyntaxDocument.addUndoableEdit(new CaretUndo(selection.getSelectionStart(), selection.getSelectionEnd())); + selection.setSelection(newStart, newEnd, newStartLine, newEndLine, newBias); } // When the user is typing, etc, we don't want the caret @@ -1002,10 +978,7 @@ caret.setBlink(true); CARET_TIMER.restart(); - // Disable rectangle select if selection start = selection end - if (selectionStart == selectionEnd) { - rectangleSelect = false; - } + selection.disableSelectionIfEmpty(); // Clear the `magic' caret position used by up/down magicCaret = -1; @@ -1018,48 +991,7 @@ */ @Nullable public String getSelectedText() { - if (selectionStart == selectionEnd) { - return null; - } - - if (rectangleSelect) { - // Return each row of the selection on a new line - - final Element map = document.getDefaultRootElement(); - - int start = selectionStart - map.getElement(selectionStartLine).getStartOffset(); - int end = selectionEnd - map.getElement(selectionEndLine).getStartOffset(); - - // Certain rectangles satisfy this condition... - if (end < start) { - final int tmp = end; - end = start; - start = tmp; - } - - final StringBuilder buf = new StringBuilder(); - final Segment seg = new Segment(); - - for (int i = selectionStartLine; i <= selectionEndLine; i++) { - final Element lineElement = map.getElement(i); - int lineStart = lineElement.getStartOffset(); - final int lineEnd = lineElement.getEndOffset() - 1; - - lineStart = Math.min(lineStart + start, lineEnd); - final int lineLen = Math.min(end - start, lineEnd - lineStart); - - getText(lineStart, lineLen, seg); - buf.append(seg.array, seg.offset, seg.count); - - if (i != selectionEndLine) { - buf.append('\n'); - } - } - - return buf.toString(); - } else { - return getText(selectionStart, selectionEnd - selectionStart); - } + return selection.getSelectedText(); } /** @@ -1071,68 +1003,9 @@ throw new InternalError("Text component read only"); } - SyntaxDocument.beginCompoundEdit(); + selection.setSelectedText(selectedText); - try { - if (rectangleSelect) { - final Element map = document.getDefaultRootElement(); - - int start = selectionStart - map.getElement(selectionStartLine).getStartOffset(); - int end = selectionEnd - map.getElement(selectionEndLine).getStartOffset(); - - // Certain rectangles satisfy this condition... - if (end < start) { - final int tmp = end; - end = start; - start = tmp; - } - - int lastNewline = 0; - int currNewline = 0; - - for (int i = selectionStartLine; i <= selectionEndLine; i++) { - final Element lineElement = map.getElement(i); - final int lineStart = lineElement.getStartOffset(); - final int lineEnd = lineElement.getEndOffset() - 1; - final int rectangleStart = Math.min(lineEnd, lineStart + start); - - document.remove(rectangleStart, Math.min(lineEnd - rectangleStart, end - start)); - - if (selectedText == null) { - continue; - } - - currNewline = selectedText.indexOf('\n', lastNewline); - if (currNewline == -1) { - currNewline = selectedText.length(); - } - - document.insertString(rectangleStart, selectedText.substring(lastNewline, currNewline), null); - - lastNewline = Math.min(selectedText.length(), currNewline + 1); - } - - if (selectedText != null && currNewline != selectedText.length()) { - final int offset = map.getElement(selectionEndLine).getEndOffset() - 1; - document.insertString(offset, "\n", null); - document.insertString(offset + 1, selectedText.substring(currNewline + 1), null); - } - } else { - document.remove(selectionStart, selectionEnd - selectionStart); - if (selectedText != null) { - document.insertString(selectionStart, selectedText, null); - } - } - } catch (final BadLocationException bl) { - bl.printStackTrace(); - throw new InternalError("Cannot replace selection"); - } finally { - // No matter what happens... stops us from leaving document - // in a bad state - SyntaxDocument.endCompoundEdit(); - } - - setCaretPosition(selectionEnd); + setCaretPosition(selection.getSelectionEnd()); } /** @@ -1168,15 +1041,15 @@ */ public void overwriteSetSelectedText(@NotNull final String str) { // Don't overstrike if there is a selection - if (!overwrite || selectionStart != selectionEnd) { + if (!overwrite || selection.getSelectionStart() != selection.getSelectionEnd()) { setSelectedText(str); return; } // Don't overstrike if we're on the end of // the line - final int caret = getCaretPosition(); - final int caretLineEnd = getLineEndOffset(getCaretLine()); + final int caret = selection.getCaretPosition(); + final int caretLineEnd = getLineEndOffset(selection.getCaretLine()); if (caretLineEnd - caret <= str.length()) { setSelectedText(str); return; @@ -1215,7 +1088,7 @@ * Returns true if the selection is rectangular, false otherwise. */ public boolean isSelectionRectangular() { - return rectangleSelect; + return selection.isSelectionRectangular(); } /** @@ -1224,7 +1097,7 @@ * otherwise */ public void setSelectionRectangular(final boolean rectangleSelect) { - this.rectangleSelect = rectangleSelect; + selection.setSelectionRectangular(rectangleSelect); painter.invalidateSelectedLines(); } @@ -1259,7 +1132,7 @@ * Places the selected text into the clipboard. */ public void copy() { - if (selectionStart != selectionEnd) { + if (selection.getSelectionStart() != selection.getSelectionEnd()) { final Clipboard clipboard = getToolkit().getSystemClipboard(); final String selection = getSelectedText(); @@ -1454,6 +1327,8 @@ final int offset = e.getOffset(); final int length = e.getLength(); + final int selectionStart = selection.getSelectionStart(); + final int selectionEnd = selection.getSelectionEnd(); final int newStart; if (selectionStart > offset || (selectionStart == selectionEnd && selectionStart == offset)) { @@ -1478,6 +1353,8 @@ final int offset = e.getOffset(); final int length = e.getLength(); + final int selectionStart = selection.getSelectionStart(); + final int selectionEnd = selection.getSelectionEnd(); final int newStart; if (selectionStart > offset) { @@ -1519,7 +1396,7 @@ } setSelectionRectangular((e.getModifiers() & InputEvent.CTRL_MASK) != 0); - select(getMarkPosition(), xyToOffset(e.getX(), e.getY())); + select(selection.getMarkPosition(), xyToOffset(e.getX(), e.getY())); } @Override @@ -1594,8 +1471,8 @@ if ((evt.getModifiers() & InputEvent.SHIFT_MASK) == 0) { setCaretPosition(dot); } else { - rectangleSelect = (evt.getModifiers() & InputEvent.CTRL_MASK) != 0; - select(getMarkPosition(), dot); + selection.setSelectionRectangular((evt.getModifiers() & InputEvent.CTRL_MASK) != 0); + select(selection.getMarkPosition(), dot); } } @@ -1608,7 +1485,7 @@ try { int bracket = TextUtilities.findMatchingBracket(document, Math.max(0, dot - 1)); if (bracket != -1) { - int mark = getMarkPosition(); + int mark = selection.getMarkPosition(); // Hack if (bracket > mark) { bracket++; Added: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java (rev 0) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java 2014-02-28 08:16:30 UTC (rev 9652) @@ -0,0 +1,294 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.textedit.textarea; + +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.Element; +import javax.swing.text.Segment; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class TextAreaSelection { + + /** + * The {@link Document} this selection is part of. + */ + @NotNull + private final Document document; + + private int selectionStart; + + private int selectionStartLine; + + private int selectionEnd; + + private int selectionEndLine; + + private boolean biasLeft; + + private boolean rectangleSelect; + + /** + * Creates a new instance. + * @param document the document to select in + */ + public TextAreaSelection(@NotNull final Document document) { + this.document = document; + } + + /** + * Returns the selection start offset. + */ + public int getSelectionStart() { + return selectionStart; + } + + /** + * Returns the selection start line. + */ + public int getSelectionStartLine() { + return selectionStartLine; + } + + /** + * Returns the selection end offset. + */ + public int getSelectionEnd() { + return selectionEnd; + } + + /** + * Returns the selection end line. + */ + public int getSelectionEndLine() { + return selectionEndLine; + } + + public boolean getBiasLeft() { + return biasLeft; + } + + /** + * Returns the caret position. This will either be the selection start or + * the selection end, depending on which direction the selection was made + * in. + */ + public int getCaretPosition() { + return biasLeft ? selectionStart : selectionEnd; + } + + /** + * Returns the caret line. + */ + public int getCaretLine() { + return biasLeft ? selectionStartLine : selectionEndLine; + } + + /** + * Returns the mark position. This will be the opposite selection bound to + * the caret position. + * @see #getCaretPosition() + */ + public int getMarkPosition() { + return biasLeft ? selectionEnd : selectionStart; + } + + public void setSelection(final int newStart, final int newEnd, final int newStartLine, final int newEndLine, final boolean newBias) { + selectionStart = newStart; + selectionEnd = newEnd; + selectionStartLine = newStartLine; + selectionEndLine = newEndLine; + biasLeft = newBias; + } + + /** + * Returns the selected text, or null if no selection is active. + */ + @Nullable + public String getSelectedText() { + if (selectionStart == selectionEnd) { + return null; + } + + if (rectangleSelect) { + // Return each row of the selection on a new line + + final Element map = document.getDefaultRootElement(); + + int start = selectionStart - map.getElement(selectionStartLine).getStartOffset(); + int end = selectionEnd - map.getElement(selectionEndLine).getStartOffset(); + + // Certain rectangles satisfy this condition... + if (end < start) { + final int tmp = end; + end = start; + start = tmp; + } + + final StringBuilder buf = new StringBuilder(); + final Segment seg = new Segment(); + + for (int i = selectionStartLine; i <= selectionEndLine; i++) { + final Element lineElement = map.getElement(i); + int lineStart = lineElement.getStartOffset(); + final int lineEnd = lineElement.getEndOffset() - 1; + + lineStart = Math.min(lineStart + start, lineEnd); + final int lineLen = Math.min(end - start, lineEnd - lineStart); + + getText(lineStart, lineLen, seg); + buf.append(seg.array, seg.offset, seg.count); + + if (i != selectionEndLine) { + buf.append('\n'); + } + } + + return buf.toString(); + } else { + return getText(selectionStart, selectionEnd - selectionStart); + } + } + + public void disableSelectionIfEmpty() { + // Disable rectangle select if selection start = selection end + if (selectionStart == selectionEnd) { + rectangleSelect = false; + } + } + + /** + * Returns the specified substring of the document. + * @param start the start offset + * @param len the length of the substring + * @return the substring, or null if the offsets are invalid + */ + @Nullable + public String getText(final int start, final int len) { + try { + return document.getText(start, len); + } catch (final BadLocationException bl) { + bl.printStackTrace(); + return null; + } + } + + /** + * Copies the specified substring of the document into a segment. If the + * offsets are invalid, the segment will contain a null string. + * @param start the start offset + * @param len the length of the substring + * @param segment the segment + */ + public void getText(final int start, final int len, @NotNull final Segment segment) { + try { + document.getText(start, len, segment); + } catch (final BadLocationException bl) { + bl.printStackTrace(); + segment.offset = 0; + segment.count = 0; + } + } + + /** + * Replaces the selection with the specified text. + * @param selectedText the replacement text for the selection + */ + public void setSelectedText(@NotNull final String selectedText) { + SyntaxDocument.beginCompoundEdit(); + + try { + if (rectangleSelect) { + final Element map = document.getDefaultRootElement(); + + int start = selectionStart - map.getElement(selectionStartLine).getStartOffset(); + int end = selectionEnd - map.getElement(selectionEndLine).getStartOffset(); + + // Certain rectangles satisfy this condition... + if (end < start) { + final int tmp = end; + end = start; + start = tmp; + } + + int lastNewline = 0; + int currNewline = 0; + + for (int i = selectionStartLine; i <= selectionEndLine; i++) { + final Element lineElement = map.getElement(i); + final int lineStart = lineElement.getStartOffset(); + final int lineEnd = lineElement.getEndOffset() - 1; + final int rectangleStart = Math.min(lineEnd, lineStart + start); + + document.remove(rectangleStart, Math.min(lineEnd - rectangleStart, end - start)); + + if (selectedText == null) { + continue; + } + + currNewline = selectedText.indexOf('\n', lastNewline); + if (currNewline == -1) { + currNewline = selectedText.length(); + } + + document.insertString(rectangleStart, selectedText.substring(lastNewline, currNewline), null); + + lastNewline = Math.min(selectedText.length(), currNewline + 1); + } + + if (selectedText != null && currNewline != selectedText.length()) { + final int offset = map.getElement(selectionEndLine).getEndOffset() - 1; + document.insertString(offset, "\n", null); + document.insertString(offset + 1, selectedText.substring(currNewline + 1), null); + } + } else { + document.remove(selectionStart, selectionEnd - selectionStart); + if (selectedText != null) { + document.insertString(selectionStart, selectedText, null); + } + } + } catch (final BadLocationException bl) { + bl.printStackTrace(); + throw new InternalError("Cannot replace selection"); + } finally { + // No matter what happens... stops us from leaving document + // in a bad state + SyntaxDocument.endCompoundEdit(); + } + } + + /** + * Returns true if the selection is rectangular, false otherwise. + */ + public boolean isSelectionRectangular() { + return rectangleSelect; + } + + /** + * Sets if the selection should be rectangular. + * @param rectangleSelect true if the selection should be rectangular, false + * otherwise + */ + public void setSelectionRectangular(final boolean rectangleSelect) { + this.rectangleSelect = rectangleSelect; + } + +} Property changes on: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaSelection.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 07:50:35
|
Revision: 9651 http://sourceforge.net/p/gridarta/code/9651 Author: akirschbaum Date: 2014-02-28 07:50:30 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Remove JEditTextArea.setDocument(). Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/gameobjectattributes/AttributesPaneBuilder.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/ScriptEditView.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/gameobjectattributes/AttributesPaneBuilder.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/gameobjectattributes/AttributesPaneBuilder.java 2014-02-28 07:01:20 UTC (rev 9650) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/gameobjectattributes/AttributesPaneBuilder.java 2014-02-28 07:50:30 UTC (rev 9651) @@ -483,8 +483,7 @@ } else { text = ""; } - final JEditTextArea input = new JEditTextArea(textAreaDefaults); - input.setDocument(new SyntaxDocument()); + final JEditTextArea input = new JEditTextArea(textAreaDefaults, new SyntaxDocument()); input.getDocument().setTokenMarker(TokenMarkerFactory.createTokenMarker(archetypeAttribute.getFileExtension())); input.setText(text == null ? "" : text); input.setCaretPosition(0); Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/ScriptEditView.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/ScriptEditView.java 2014-02-28 07:01:20 UTC (rev 9650) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/scripteditor/ScriptEditView.java 2014-02-28 07:50:30 UTC (rev 9651) @@ -191,10 +191,9 @@ * @param file file where this script is stored, null if new script opened */ public void addTab(@NotNull final String title, @Nullable final File file) { - final JEditTextArea ta = new JEditTextArea(textAreaDefaults); // open new TextArea + final SyntaxDocument syntaxDocument = new SyntaxDocument(); + final JEditTextArea ta = new JEditTextArea(textAreaDefaults, syntaxDocument); // open new TextArea //ta.setFont(new Font("Courier New", Font.PLAIN, 12)); - final SyntaxDocument syntaxDocument = new SyntaxDocument(); - ta.setDocument(syntaxDocument); textAreas.add(ta); ta.getDocument().setTokenMarker(TokenMarkerFactory.createTokenMarker(file)); scriptEditUndoActions.addDocument(syntaxDocument); Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 07:01:20 UTC (rev 9650) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 07:50:30 UTC (rev 9651) @@ -142,8 +142,8 @@ @NotNull private final InputHandler inputHandler; - @Nullable - private SyntaxDocument document; + @NotNull + private final SyntaxDocument document; @NotNull private final DocumentListener documentHandler; @@ -175,7 +175,7 @@ * Creates a new JEditTextArea with the specified settings. * @param defaults the default settings */ - public JEditTextArea(@NotNull final TextAreaDefaults defaults) { + public JEditTextArea(@NotNull final TextAreaDefaults defaults, @NotNull final SyntaxDocument document) { // Enable the necessary events enableEvents(AWTEvent.KEY_EVENT_MASK); @@ -205,7 +205,10 @@ // Load the defaults inputHandler = defaults.getInputHandler(); - setDocument(defaults.getDocument()); + this.document = document; + document.addDocumentListener(documentHandler); + select(0, 0); + updateScrollBars(); editable = defaults.getEditable(); electricScroll = defaults.getElectricScroll(); @@ -708,37 +711,11 @@ * Returns the document this text area is editing. */ @NotNull - @SuppressWarnings("NullableProblems") public SyntaxDocument getDocument() { - if (document == null) { - throw new IllegalStateException(); - } return document; } /** - * Sets the document this text area is editing. - * @param document the document - */ - public final void setDocument(@Nullable final SyntaxDocument document) { - if (this.document == document) { - return; - } - - if (this.document != null) { - this.document.removeDocumentListener(documentHandler); - } - - this.document = document; - - document.addDocumentListener(documentHandler); - - select(0, 0); - updateScrollBars(); - painter.repaint(); - } - - /** * Returns the document's token marker. Equivalent to calling {@code * getDocument().getTokenMarker()}. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 07:01:27
|
Revision: 9650 http://sourceforge.net/p/gridarta/code/9650 Author: akirschbaum Date: 2014-02-28 07:01:20 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Remove unused code. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 06:21:55 UTC (rev 9649) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 07:01:20 UTC (rev 9650) @@ -45,7 +45,6 @@ import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.Timer; -import javax.swing.event.CaretEvent; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; @@ -1433,29 +1432,6 @@ } - private class MutableCaretEvent extends CaretEvent { - - /** - * Serial Version UID. - */ - private static final long serialVersionUID = 1L; - - MutableCaretEvent() { - super(JEditTextArea.this); - } - - @Override - public int getDot() { - return getCaretPosition(); - } - - @Override - public int getMark() { - return getMarkPosition(); - } - - } - private class AdjustHandler implements AdjustmentListener { @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-28 06:22:01
|
Revision: 9649 http://sourceforge.net/p/gridarta/code/9649 Author: akirschbaum Date: 2014-02-28 06:21:55 +0000 (Fri, 28 Feb 2014) Log Message: ----------- Extract TextAreaCaret from JEditTextArea. Modified Paths: -------------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java Added Paths: ----------- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaCaret.java Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-23 20:14:24 UTC (rev 9648) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-02-28 06:21:55 UTC (rev 9649) @@ -119,12 +119,9 @@ @Nullable private final JPopupMenu popup; - private final boolean caretBlinks; + @NotNull + private final TextAreaCaret caret; - private boolean caretVisible; - - private boolean blink; - private final boolean editable; private int firstLine; @@ -184,12 +181,12 @@ enableEvents(AWTEvent.KEY_EVENT_MASK); // Initialize some misc. stuff - painter = new TextAreaPainter(this, defaults); + caret = new TextAreaCaret(defaults.getCaretVisible(), defaults.getCaretBlinks()); + painter = new TextAreaPainter(this, caret, defaults); documentHandler = new DocumentHandler(); lineSegment = new Segment(); bracketLine = -1; bracketPosition = -1; - blink = true; // Initialize the GUI setLayout(new ScrollLayout(this)); @@ -211,8 +208,6 @@ inputHandler = defaults.getInputHandler(); setDocument(defaults.getDocument()); editable = defaults.getEditable(); - caretVisible = defaults.getCaretVisible(); - caretBlinks = defaults.getCaretBlinks(); electricScroll = defaults.getElectricScroll(); popup = defaults.getPopup(); @@ -299,20 +294,11 @@ } /** - * Returns true if the caret is visible, false otherwise. - */ - public boolean isCaretVisible() { - return (!caretBlinks || blink) && caretVisible; - } - - /** * Sets if the caret should be visible. * @param caretVisible true if the caret should be visible, false otherwise */ public void setCaretVisible(final boolean caretVisible) { - this.caretVisible = caretVisible; - blink = true; - + caret.setCaretVisible(caretVisible); painter.invalidateSelectedLines(); } @@ -320,11 +306,8 @@ * Blinks the caret. */ public void blinkCaret() { - if (caretBlinks) { - blink = !blink; + if (caret.blinkCaret()) { painter.invalidateSelectedLines(); - } else { - blink = true; } } @@ -1040,7 +1023,7 @@ // When the user is typing, etc, we don't want the caret // to blink - blink = true; + caret.setBlink(true); CARET_TIMER.restart(); // Disable rectangle select if selection start = selection end Added: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaCaret.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaCaret.java (rev 0) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaCaret.java 2014-02-28 06:21:55 UTC (rev 9649) @@ -0,0 +1,68 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.textedit.textarea; + +public class TextAreaCaret { + + private final boolean caretBlinks; + + private boolean caretVisible; + + private boolean blink = true; + + public TextAreaCaret(final boolean caretVisible, final boolean caretBlinks) { + this.caretVisible = caretVisible; + this.caretBlinks = caretBlinks; + } + + /** + * Returns true if the caret is visible, false otherwise. + */ + public boolean isCaretVisible() { + return (!caretBlinks || blink) && caretVisible; + } + + /** + * Sets if the caret should be visible. + * @param caretVisible true if the caret should be visible, false otherwise + */ + public void setCaretVisible(final boolean caretVisible) { + this.caretVisible = caretVisible; + blink = true; + } + + /** + * Blinks the caret. + */ + public boolean blinkCaret() { + if (caretBlinks) { + blink = !blink; + return true; + } else { + blink = true; + return false; + } + } + + public void setBlink(final boolean blink) { + this.blink = blink; + } + +} Property changes on: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaCaret.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-23 20:14:24 UTC (rev 9648) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/TextAreaPainter.java 2014-02-28 06:21:55 UTC (rev 9649) @@ -62,6 +62,9 @@ */ private final JEditTextArea textArea; + @NotNull + private final TextAreaCaret caret; + /** * Whether the caret should be wide even in insert mode. * @serial @@ -199,8 +202,9 @@ * @param textArea the associated text area that is painted * @param defaults the text attributes to use */ - public TextAreaPainter(@NotNull final JEditTextArea textArea, @NotNull final TextAreaDefaults defaults) { + public TextAreaPainter(@NotNull final JEditTextArea textArea, @NotNull final TextAreaCaret caret, @NotNull final TextAreaDefaults defaults) { this.textArea = textArea; + this.caret = caret; setAutoscrolls(true); setDoubleBuffered(true); @@ -615,7 +619,7 @@ * @param y the y-offset for painting */ private void paintCaret(@NotNull final Graphics gfx, final int line, final int y) { - if (textArea.isCaretVisible()) { + if (caret.isCaretVisible()) { final int offset = textArea.getCaretPosition() - textArea.getLineStartOffset(line); final int caretX = textArea.offsetToX2(line, offset); final int caretWidth = blockCaret || textArea.isOverwriteEnabled() ? fontMetrics.charWidth('w') : 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 20:14:31
|
Revision: 9648 http://sourceforge.net/p/gridarta/code/9648 Author: akirschbaum Date: 2014-02-23 20:14:24 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Add missing library which broke the settings dialog. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/atrinik/build.gradle trunk/src/crossfire/ChangeLog trunk/src/crossfire/build.gradle trunk/src/daimonin/ChangeLog trunk/src/daimonin/build.gradle Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/atrinik/ChangeLog 2014-02-23 20:14:24 UTC (rev 9648) @@ -1,5 +1,7 @@ 2014-02-23 Andreas Kirschbaum + * Add missing library which broke the settings dialog. + * Fix run plugin dialog for plugins which use MapPathParameter values. Modified: trunk/src/atrinik/build.gradle =================================================================== --- trunk/src/atrinik/build.gradle 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/atrinik/build.gradle 2014-02-23 20:14:24 UTC (rev 9648) @@ -14,6 +14,7 @@ compile project(':src:resources') runtime name: 'bsh-classgen', version: '2.0b4', group: 'bsh' runtime name: 'bsh-commands', version: '2.0b4', group: 'bsh' + runtime name: 'japi-lib-swing-extlib', version: '0.1.0', group: 'japi-lib' testCompile name: 'junit', version: '4.2' testCompile project(':src:model').sourceSets.test.output } Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/crossfire/ChangeLog 2014-02-23 20:14:24 UTC (rev 9648) @@ -1,5 +1,7 @@ 2014-02-23 Andreas Kirschbaum + * Add missing library which broke the settings dialog. + * Fix run plugin dialog for plugins which use MapPathParameter values. Modified: trunk/src/crossfire/build.gradle =================================================================== --- trunk/src/crossfire/build.gradle 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/crossfire/build.gradle 2014-02-23 20:14:24 UTC (rev 9648) @@ -14,6 +14,7 @@ compile project(':src:resources') runtime name: 'bsh-classgen', version: '2.0b4', group: 'bsh' runtime name: 'bsh-commands', version: '2.0b4', group: 'bsh' + runtime name: 'japi-lib-swing-extlib', version: '0.1.0', group: 'japi-lib' testCompile name: 'junit', version: '4.2' testCompile project(':src:model').sourceSets.test.output } Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/daimonin/ChangeLog 2014-02-23 20:14:24 UTC (rev 9648) @@ -1,5 +1,7 @@ 2014-02-23 Andreas Kirschbaum + * Add missing library which broke the settings dialog. + * Fix run plugin dialog for plugins which use MapPathParameter values. Modified: trunk/src/daimonin/build.gradle =================================================================== --- trunk/src/daimonin/build.gradle 2014-02-23 13:12:15 UTC (rev 9647) +++ trunk/src/daimonin/build.gradle 2014-02-23 20:14:24 UTC (rev 9648) @@ -14,6 +14,7 @@ compile project(':src:resources') runtime name: 'bsh-classgen', version: '2.0b4', group: 'bsh' runtime name: 'bsh-commands', version: '2.0b4', group: 'bsh' + runtime name: 'japi-lib-swing-extlib', version: '0.1.0', group: 'japi-lib' testCompile name: 'junit', version: '4.2' testCompile project(':src:model').sourceSets.test.output } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 13:12:22
|
Revision: 9647 http://sourceforge.net/p/gridarta/code/9647 Author: akirschbaum Date: 2014-02-23 13:12:15 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Simplify build script. Modified Paths: -------------- trunk/build.gradle trunk/test-mapvalidator/build.gradle Modified: trunk/build.gradle =================================================================== --- trunk/build.gradle 2014-02-23 13:06:29 UTC (rev 9646) +++ trunk/build.gradle 2014-02-23 13:12:15 UTC (rev 9647) @@ -103,11 +103,9 @@ } // Delete all generated files. -task clean { +task clean(type: Delete) { description = 'Deletes generated files.' - doLast { - delete 'build' - } + delete buildDir } // Run checkstyle on Java sources in all projects. Modified: trunk/test-mapvalidator/build.gradle =================================================================== --- trunk/test-mapvalidator/build.gradle 2014-02-23 13:06:29 UTC (rev 9646) +++ trunk/test-mapvalidator/build.gradle 2014-02-23 13:12:15 UTC (rev 9647) @@ -42,8 +42,7 @@ check.dependsOn check_crossfire check.dependsOn check_daimonin -task clean { - doLast { - delete buildDir - } +task clean(type: Delete) { + description = 'Deletes generated files.' + delete buildDir } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 13:06:32
|
Revision: 9646 http://sourceforge.net/p/gridarta/code/9646 Author: akirschbaum Date: 2014-02-23 13:06:29 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Remove unused code. Modified Paths: -------------- trunk/test-mapvalidator/build.gradle Modified: trunk/test-mapvalidator/build.gradle =================================================================== --- trunk/test-mapvalidator/build.gradle 2014-02-23 13:02:34 UTC (rev 9645) +++ trunk/test-mapvalidator/build.gradle 2014-02-23 13:06:29 UTC (rev 9646) @@ -20,7 +20,6 @@ dependsOn typeProject.tasks.getByName('classes') doLast { mkdir outputFile.parentFile - String applicationName = typeProject.applicationName try { javaexec { classpath typeProject.sourceSets.main.runtimeClasspath This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 13:02:41
|
Revision: 9645 http://sourceforge.net/p/gridarta/code/9645 Author: akirschbaum Date: 2014-02-23 13:02:34 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Simplify build script. Modified Paths: -------------- trunk/test-mapvalidator/build.gradle Modified: trunk/test-mapvalidator/build.gradle =================================================================== --- trunk/test-mapvalidator/build.gradle 2014-02-23 12:56:15 UTC (rev 9644) +++ trunk/test-mapvalidator/build.gradle 2014-02-23 13:02:34 UTC (rev 9645) @@ -6,21 +6,6 @@ description = 'Runs all map-validator tests.' } -public static String loadFile(File file) { - ByteArrayOutputStream data = new ByteArrayOutputStream() - new FileInputStream(file).withStream { FileInputStream is -> - byte[] tmp = new byte[1024] - while (true) { - int len = is.read(tmp) - if (len <= 0) { - break - } - data.write(tmp, 0, len) - } - } - return new String(data.toByteArray()) -} - tasks.addRule("Pattern: check_<type>") { String taskName -> if (taskName.startsWith("check_")) { String type = taskName - 'check_' @@ -46,7 +31,7 @@ standardOutput = new FileOutputStream(outputFile) } } catch (ExecException ex) { - println loadFile(outputFile) + println outputFile.text throw ex; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 12:56:20
|
Revision: 9644 http://sourceforge.net/p/gridarta/code/9644 Author: akirschbaum Date: 2014-02-23 12:56:15 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Fix run plugin dialog for plugins which use MapPathParameter values. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/PluginParameterViewFactory.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/atrinik/ChangeLog 2014-02-23 12:56:15 UTC (rev 9644) @@ -1,5 +1,8 @@ 2014-02-23 Andreas Kirschbaum + * Fix run plugin dialog for plugins which use MapPathParameter + values. + * Do not run plugin scripts if not all parameter values are specified. Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/crossfire/ChangeLog 2014-02-23 12:56:15 UTC (rev 9644) @@ -1,5 +1,8 @@ 2014-02-23 Andreas Kirschbaum + * Fix run plugin dialog for plugins which use MapPathParameter + values. + * Do not run plugin scripts if not all parameter values are specified. Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/daimonin/ChangeLog 2014-02-23 12:56:15 UTC (rev 9644) @@ -1,5 +1,8 @@ 2014-02-23 Andreas Kirschbaum + * Fix run plugin dialog for plugins which use MapPathParameter + values. + * Do not run plugin scripts if not all parameter values are specified. Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -20,16 +20,20 @@ package net.sf.gridarta.gui.dialog.plugin.parameter; import java.awt.Component; -import java.io.File; import javax.swing.JComponent; import javax.swing.JFileChooser; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import net.sf.gridarta.gui.utils.JFileField; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapmodel.MapFile; +import net.sf.gridarta.model.mapmodel.MapPathUtils; +import net.sf.gridarta.plugin.parameter.InvalidValueException; import net.sf.gridarta.plugin.parameter.MapPathParameter; import org.jetbrains.annotations.NotNull; @@ -57,28 +61,41 @@ * Creates a new instance. * @param parent the parent component for the file chooser * @param parameter the parameter to affect + * @param pathManager the path manager instance * @noinspection TypeMayBeWeakened */ - public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter) { - final File value = parameter.getValueOrNull(); - this.value = new JFileField(parent, null, parameter.getBaseDir(), value == null ? new File("") : value, JFileChooser.FILES_AND_DIRECTORIES); + public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter, @NotNull final PathManager pathManager) { + final String value = parameter.getValueOrNull(); + final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + value)); + this.value = new JFileField(parent, null, mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); this.value.addDocumentListener(new DocumentListener() { @Override public void insertUpdate(final DocumentEvent e) { - parameter.setFile(MapPathParameterView.this.value.getFile()); + setFile(); } @Override public void removeUpdate(final DocumentEvent e) { - parameter.setFile(MapPathParameterView.this.value.getFile()); + setFile(); } @Override public void changedUpdate(final DocumentEvent e) { - parameter.setFile(MapPathParameterView.this.value.getFile()); + setFile(); } + /** + * Updates the {@code parameter} from the input field. + */ + private void setFile() { + try { + parameter.setFile(MapPathParameterView.this.value.getFile()); + } catch (final InvalidValueException ex) { + JOptionPane.showMessageDialog(parent, "Invalid file: " + ex.getMessage()); + } + } + }); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/PluginParameterViewFactory.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/PluginParameterViewFactory.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/PluginParameterViewFactory.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -28,6 +28,7 @@ import net.sf.gridarta.model.archetypeset.ArchetypeSet; import net.sf.gridarta.model.face.FaceObjectProviders; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.model.mapmanager.MapManager; import net.sf.gridarta.plugin.parameter.ArchetypeParameter; @@ -66,16 +67,24 @@ private final FaceObjectProviders faceObjectProviders; /** + * The {@link PathManager} instance for converting map files. + */ + @NotNull + private final PathManager pathManager; + + /** * Creates a new instance. * @param faceObjectProviders the face object providers for looking up * faces + * @param pathManager the path manager instance for converting map files */ - public PluginParameterViewFactory(@NotNull final ArchetypeSet<G, A, R> archetypeSet, @NotNull final GameObjectAttributesModel<G, A, R> gameObjectAttributesModel, @NotNull final ObjectChooser<G, A, R> objectChooser, @NotNull final MapManager<G, A, R> mapManager, @NotNull final FaceObjectProviders faceObjectProviders) { + public PluginParameterViewFactory(@NotNull final ArchetypeSet<G, A, R> archetypeSet, @NotNull final GameObjectAttributesModel<G, A, R> gameObjectAttributesModel, @NotNull final ObjectChooser<G, A, R> objectChooser, @NotNull final MapManager<G, A, R> mapManager, @NotNull final FaceObjectProviders faceObjectProviders, @NotNull final PathManager pathManager) { this.archetypeSet = archetypeSet; this.gameObjectAttributesModel = gameObjectAttributesModel; this.objectChooser = objectChooser; this.mapManager = mapManager; this.faceObjectProviders = faceObjectProviders; + this.pathManager = pathManager; } /** @@ -118,7 +127,7 @@ @NotNull @Override public PluginParameterView visit(@NotNull final MapPathParameter<G, A, R> parameter) { - return new MapPathParameterView<G, A, R>(parent, parameter); + return new MapPathParameterView<G, A, R>(parent, parameter, pathManager); } @NotNull Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -398,7 +398,7 @@ final GameObjectAttributesControl<G, A, R> gameObjectAttributesControl = new GameObjectAttributesControl<G, A, R>(gameObjectAttributesModel, gameObjectAttributesDialogFactory, objectChooser, projectModel.getMapManager(), selectedSquareModel, projectModel.getGameObjectFactory(), mapViewSettings); final GameObjectTab<G, A, R> gameObjectTab = new GameObjectTab<G, A, R>("gameObject", gameObjectAttributesControl, Location.BOTTOM, false, 0, true); final ReplaceDialogManager<G, A, R> replaceDialogManager = new ReplaceDialogManager<G, A, R>(parent, copyBuffer, objectChooser, mapViewManager, projectModel.getFaceObjectProviders(), insertionModeSet); - final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory = new PluginParameterViewFactory<G, A, R>(projectModel.getArchetypeSet(), gameObjectAttributesModel, objectChooser, projectModel.getMapManager(), projectModel.getFaceObjectProviders()); + final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory = new PluginParameterViewFactory<G, A, R>(projectModel.getArchetypeSet(), gameObjectAttributesModel, objectChooser, projectModel.getMapManager(), projectModel.getFaceObjectProviders(), projectModel.getPathManager()); final PluginParameters pluginParameters = projectModel.newPluginParameters(); pluginParameters.addPluginParameter("rendererFactory", rendererFactory); final PluginController<G, A, R> pluginControl = new PluginController<G, A, R>(filterControl, projectModel.getPluginModel(), pluginParameters, parent, pluginParameterViewFactory, scriptsFile, resourceIcons); Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -21,6 +21,7 @@ import java.io.File; import java.io.IOException; +import net.sf.gridarta.model.mapmodel.AbsoluteMapPath; import net.sf.gridarta.model.mapmodel.MapFile; import net.sf.gridarta.model.mapmodel.MapPathUtils; import net.sf.gridarta.model.settings.ProjectSettings; @@ -62,6 +63,16 @@ } /** + * Returns a {@link MapFile} instance from an {@link AbsoluteMapPath}. + * @param mapPath the map path + * @return the map file instance + */ + @NotNull + public MapFile getMapFile(@NotNull final AbsoluteMapPath mapPath) { + return new MapFile(new MapFile(projectSettings.getMapsDirectory()), mapPath); + } + + /** * Returns a {@link MapFile} instance for a {@link File}. If the file points * into the maps directory, a properly based map file is returned. Otherwise * a map file based on the root directory is returned. Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -22,14 +22,17 @@ import java.io.File; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapmodel.MapFile; +import net.sf.gridarta.model.settings.ProjectSettings; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** - * A {@link PluginParameter} that represents a map. - * @author Andreas Kirschbaum + * A {@link PluginParameter} that holds a path with in the maps directory. */ -public class MapPathParameter<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractPathParameter<G, A, R> { +public class MapPathParameter<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractStringPluginParameter<G, A, R, String> { /** * The string representation of this parameter type. @@ -38,11 +41,28 @@ public static final String PARAMETER_TYPE = "MapPathParameter"; /** + * The {@link PathManager} instance for converting {@link File Files} into + * path names. + */ + @NotNull + private final PathManager pathManager; + + /** + * The {@link ProjectSettings} instance. + */ + @NotNull + private final ProjectSettings projectSettings; + + /** * Creates a new instance. - * @param baseDir the base directory + * @param pathManager the path manager instance for converting files into + * path names + * @param projectSettings the project settings instance */ - public MapPathParameter(@NotNull final File baseDir) { - super(baseDir); + public MapPathParameter(@NotNull final PathManager pathManager, @NotNull final ProjectSettings projectSettings) { + super(""); + this.pathManager = pathManager; + this.projectSettings = projectSettings; } /** @@ -50,6 +70,15 @@ */ @NotNull @Override + public String getParameterType() { + return PARAMETER_TYPE; + } + + /** + * {@inheritDoc} + */ + @NotNull + @Override public <T> T visit(@NotNull final PluginParameterVisitor<G, A, R, T> visitor) { return visitor.visit(this); } @@ -59,8 +88,34 @@ */ @NotNull @Override - public String getParameterType() { - return PARAMETER_TYPE; + public String getValue() throws InvalidValueException { + return getStringValue(); } + /** + * {@inheritDoc} + */ + @Nullable + @Override + public String getValueOrNull() { + try { + return getValue(); + } catch (final InvalidValueException ignored) { + return null; + } + } + + /** + * Sets the value from a {@link File} instance. + * @param file the file instance + * @throws InvalidValueException if the file instance is invalid + */ + public void setFile(@NotNull final File file) throws InvalidValueException { + final MapFile mapFile = pathManager.getMapFile(file); + if (!mapFile.getMapsDir().equals(projectSettings.getMapsDirectory())) { + throw new InvalidValueException("the selected file " + mapFile + " must be within the maps directory " + projectSettings.getMapsDirectory()); + } + setStringValue("/" + mapFile.getMapPath().getPath()); + } + } Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -106,7 +106,7 @@ return new MapParameter<G, A, R>(mapManager, pathManager); } if (type.equals(MapPathParameter.PARAMETER_TYPE)) { - return new MapPathParameter<G, A, R>(projectSettings.getMapsDirectory()); + return new MapPathParameter<G, A, R>(pathManager, projectSettings); } throw new NoSuchParameterException(type); } Modified: trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java =================================================================== --- trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java 2014-02-23 12:35:22 UTC (rev 9643) +++ trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java 2014-02-23 12:56:15 UTC (rev 9644) @@ -26,11 +26,14 @@ import java.io.Writer; import net.sf.gridarta.model.archetype.TestArchetype; import net.sf.gridarta.model.gameobject.TestGameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.TestMapArchObject; import net.sf.gridarta.model.mapcontrol.MapControl; import net.sf.gridarta.model.mapcontrol.TestMapControlCreator; import net.sf.gridarta.model.mapmodel.MapFile; import net.sf.gridarta.model.mapmodel.TestMapModelCreator; +import net.sf.gridarta.model.settings.ProjectSettings; +import net.sf.gridarta.model.settings.TestProjectSettings; import net.sf.gridarta.utils.Size2D; import org.jdom.Document; import org.jdom.Element; @@ -326,8 +329,9 @@ */ @Test public void testMapPathToXml1() throws IOException { - final File mapDir = new File("/tmp"); - final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapDir); + final ProjectSettings projectSettings = new TestProjectSettings(); + final PathManager pathManager = new PathManager(projectSettings); + final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<TestGameObject, TestMapArchObject, TestArchetype>(pathManager, projectSettings); parameter.setName("Name"); parameter.setDescription("Description"); final StringBuilder sb = new StringBuilder(); @@ -348,8 +352,9 @@ */ @Test public void testMapPathToXml2() throws IOException { - final File mapDir = new File("/tmp"); - final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapDir); + final ProjectSettings projectSettings = new TestProjectSettings(); + final PathManager pathManager = new PathManager(projectSettings); + final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<TestGameObject, TestMapArchObject, TestArchetype>(pathManager, projectSettings); parameter.setStringValue("/path"); final StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 12:35:27
|
Revision: 9643 http://sourceforge.net/p/gridarta/code/9643 Author: akirschbaum Date: 2014-02-23 12:35:22 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Fix typo. Modified Paths: -------------- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java 2014-02-23 12:13:06 UTC (rev 9642) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java 2014-02-23 12:35:22 UTC (rev 9643) @@ -66,7 +66,7 @@ * Creates a new instance. * @param mapManager the map manager for converting map paths to map control * instances - * @param pathManager the path manager instance for incverting files into + * @param pathManager the path manager instance for converting files into * path names */ public MapParameter(@NotNull final MapManager<G, A, R> mapManager, @NotNull final PathManager pathManager) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 12:13:12
|
Revision: 9642 http://sourceforge.net/p/gridarta/code/9642 Author: akirschbaum Date: 2014-02-23 12:13:06 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Fix incosistent behavior of file input fields. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-02-23 11:49:15 UTC (rev 9641) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-02-23 12:13:06 UTC (rev 9642) @@ -119,9 +119,9 @@ public File getFile() { final String text = textField.getText(); if (text.isEmpty()) { - return baseDir == null ? new File(System.getProperty("user.dir")) : baseDir; + return baseDir == null ? new File("/") : baseDir; } else { - return baseDir == null ? new File(text) : new File(baseDir, text); + return new File(baseDir, text); } } @@ -130,8 +130,7 @@ * @param file the currently selected file */ public void setFile(@NotNull final File file) { - final String text = getRelativeFile(file); - textField.setText(text.isEmpty() ? "/" : text); + textField.setText(getRelativeFile(file)); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 11:49:21
|
Revision: 9641 http://sourceforge.net/p/gridarta/code/9641 Author: akirschbaum Date: 2014-02-23 11:49:15 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Add nullable annotation. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-02-23 09:57:45 UTC (rev 9640) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-02-23 11:49:15 UTC (rev 9641) @@ -140,7 +140,7 @@ * @return the contents */ @NotNull - private String getRelativeFile(final File file) { + private String getRelativeFile(@NotNull final File file) { return baseDir == null ? file.getPath() : PathManagerUtils.getMapPath(file, baseDir); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 09:57:49
|
Revision: 9640 http://sourceforge.net/p/gridarta/code/9640 Author: akirschbaum Date: 2014-02-23 09:57:45 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Extract ImportPluginAction from PluginController. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java Added Paths: ----------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/ImportPluginAction.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-23 09:41:39 UTC (rev 9639) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-23 09:57:45 UTC (rev 9640) @@ -137,16 +137,6 @@ pluginModel.addPluginModelListener(pluginModelListener); } - @ActionMethod - public void importPlugin() { - final JFileChooser choose = new JFileChooser(); - choose.setDialogTitle("import plugin"); - FileChooserUtils.sanitizeCurrentDirectory(choose); - if (choose.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { - pluginModel.addPlugin(choose.getSelectedFile()); - } - } - /** * Prompts the user for all unsaved plugins. * @return whether no unsaved plugins remain Added: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/ImportPluginAction.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/ImportPluginAction.java (rev 0) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/ImportPluginAction.java 2014-02-23 09:57:45 UTC (rev 9640) @@ -0,0 +1,82 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.gui.scripts; + +import java.awt.Component; +import javax.swing.Action; +import javax.swing.JFileChooser; +import net.sf.gridarta.model.archetype.Archetype; +import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.plugin.PluginModel; +import net.sf.gridarta.utils.EditorAction; +import net.sf.gridarta.utils.FileChooserUtils; +import net.sf.japi.swing.action.ActionMethod; +import org.jetbrains.annotations.NotNull; + +/** + * The action for importing a plugin from a file. + * @author Andreas Kirschbaum + */ +public class ImportPluginAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements EditorAction { + + /** + * The plugin model to update. + */ + @NotNull + private final PluginModel<G, A, R> pluginModel; + + /** + * The parent component for dialog boxes. + */ + @NotNull + private final Component parent; + + /** + * Creates a new instance. + * @param pluginModel the plugin model to update + * @param parent the parent component for dialog boxes + */ + public ImportPluginAction(@NotNull final PluginModel<G, A, R> pluginModel, @NotNull final Component parent) { + this.pluginModel = pluginModel; + this.parent = parent; + } + + /** + * Import a plugin from a file. + */ + @ActionMethod + public void importPlugin() { + final JFileChooser choose = new JFileChooser(); + choose.setDialogTitle("import plugin"); + FileChooserUtils.sanitizeCurrentDirectory(choose); + if (choose.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { + pluginModel.addPlugin(choose.getSelectedFile()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void setAction(@NotNull final Action action, @NotNull final String name) { + } + +} Property changes on: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/ImportPluginAction.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 09:41:39 UTC (rev 9639) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 09:57:45 UTC (rev 9640) @@ -161,6 +161,7 @@ import net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareModel; import net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareView; import net.sf.gridarta.gui.panel.tools.ToolPalette; +import net.sf.gridarta.gui.scripts.ImportPluginAction; import net.sf.gridarta.gui.scripts.SavePluginsAction; import net.sf.gridarta.gui.scripts.ScriptArchDataUtils; import net.sf.gridarta.gui.scripts.ScriptArchEditor; @@ -444,7 +445,7 @@ createToggleAction("tileShow", "Map Navigation", mapActions); createAction("editPlugins", "Plugin", new PluginManagerFactory<G, A, R>(mainViewFrame, pluginControl, projectModel.getPluginModel(), pluginParameterViewFactory, resourceIcons)); createAction("savePlugins", "Plugin", new SavePluginsAction<G, A, R>(pluginControl)); - createAction("importPlugin", "Plugin", pluginControl); + createAction("importPlugin", "Plugin", new ImportPluginAction<G, A, R>(projectModel.getPluginModel(), parent)); createAction("update", "Tool", updaterManager); createAction("about", "Help", new About(parent)); createAction("undo", "Undo", undoControl); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 09:41:45
|
Revision: 9639 http://sourceforge.net/p/gridarta/code/9639 Author: akirschbaum Date: 2014-02-23 09:41:39 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Extract SavePluginsAction from PluginController. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java Added Paths: ----------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/SavePluginsAction.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-23 09:04:27 UTC (rev 9638) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-23 09:41:39 UTC (rev 9639) @@ -137,19 +137,7 @@ pluginModel.addPluginModelListener(pluginModelListener); } - /** - * Saves all unsaved plugins. - */ @ActionMethod - public void savePlugins() { - for (final Plugin<G, A, R> plugin : pluginModel) { - if (!savePlugin(plugin)) { - return; - } - } - } - - @ActionMethod public void importPlugin() { final JFileChooser choose = new JFileChooser(); choose.setDialogTitle("import plugin"); @@ -181,6 +169,17 @@ } /** + * Saves all modified plugins. Does nothing if all plugins are unchanged. + */ + public void saveAllPlugins() { + for (final Plugin<G, A, R> plugin : pluginModel) { + if (!savePlugin(plugin)) { + return; + } + } + } + + /** * Saves one plugin. Does nothing if the plugin is unchanged. * @param plugin the plugin to save * @return whether the plugin has been saved, or if the plugin was not Added: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/SavePluginsAction.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/SavePluginsAction.java (rev 0) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/SavePluginsAction.java 2014-02-23 09:41:39 UTC (rev 9639) @@ -0,0 +1,66 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.gui.scripts; + +import javax.swing.Action; +import net.sf.gridarta.gui.dialog.plugin.PluginController; +import net.sf.gridarta.model.archetype.Archetype; +import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.utils.EditorAction; +import net.sf.japi.swing.action.ActionMethod; +import org.jetbrains.annotations.NotNull; + +/** + * The action for saving modified plugins. + * @author Andreas Kirschbaum + */ +public class SavePluginsAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements EditorAction { + + /** + * The plugin controller to use. + */ + @NotNull + private final PluginController<G, A, R> pluginController; + + /** + * Creates a new instance. + * @param pluginController the plugin controller to use + */ + public SavePluginsAction(@NotNull final PluginController<G, A, R> pluginController) { + this.pluginController = pluginController; + } + + /** + * Saves all unsaved plugins. + */ + @ActionMethod + public void savePlugins() { + pluginController.saveAllPlugins(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setAction(@NotNull final Action action, @NotNull final String name) { + } + +} Property changes on: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/scripts/SavePluginsAction.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 09:04:27 UTC (rev 9638) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-02-23 09:41:39 UTC (rev 9639) @@ -161,6 +161,7 @@ import net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareModel; import net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareView; import net.sf.gridarta.gui.panel.tools.ToolPalette; +import net.sf.gridarta.gui.scripts.SavePluginsAction; import net.sf.gridarta.gui.scripts.ScriptArchDataUtils; import net.sf.gridarta.gui.scripts.ScriptArchEditor; import net.sf.gridarta.gui.scripts.ScriptedEventEditor; @@ -442,7 +443,7 @@ createToggleAction("doubleFaces", "Map Navigation", mapActions); createToggleAction("tileShow", "Map Navigation", mapActions); createAction("editPlugins", "Plugin", new PluginManagerFactory<G, A, R>(mainViewFrame, pluginControl, projectModel.getPluginModel(), pluginParameterViewFactory, resourceIcons)); - createAction("savePlugins", "Plugin", pluginControl); + createAction("savePlugins", "Plugin", new SavePluginsAction<G, A, R>(pluginControl)); createAction("importPlugin", "Plugin", pluginControl); createAction("update", "Tool", updaterManager); createAction("about", "Help", new About(parent)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-23 09:04:33
|
Revision: 9638 http://sourceforge.net/p/gridarta/code/9638 Author: akirschbaum Date: 2014-02-23 09:04:27 +0000 (Sun, 23 Feb 2014) Log Message: ----------- Do not run plugin scripts if not all parameter values are specified. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/atrinik/ChangeLog 2014-02-23 09:04:27 UTC (rev 9638) @@ -1,3 +1,8 @@ +2014-02-23 Andreas Kirschbaum + + * Do not run plugin scripts if not all parameter values are + specified. + 2014-02-22 Andreas Kirschbaum * Do not retain configuration of plugin parameters when changing Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/crossfire/ChangeLog 2014-02-23 09:04:27 UTC (rev 9638) @@ -1,3 +1,8 @@ +2014-02-23 Andreas Kirschbaum + + * Do not run plugin scripts if not all parameter values are + specified. + 2014-02-22 Andreas Kirschbaum * Do not retain configuration of plugin parameters when changing Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/daimonin/ChangeLog 2014-02-23 09:04:27 UTC (rev 9638) @@ -1,3 +1,8 @@ +2014-02-23 Andreas Kirschbaum + + * Do not run plugin scripts if not all parameter values are + specified. + 2014-02-22 Andreas Kirschbaum * Do not retain configuration of plugin parameters when changing Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginController.java 2014-02-23 09:04:27 UTC (rev 9638) @@ -22,6 +22,7 @@ import java.awt.Component; import java.io.File; import java.io.IOException; +import java.util.Map; import javax.swing.Action; import javax.swing.JFileChooser; import javax.swing.JOptionPane; @@ -244,11 +245,12 @@ public void runPlugin(@NotNull final Plugin<G, A, R> plugin) { final Plugin<G, A, R> clonedPlugin = plugin.clonePlugin(); - if (!view.getRunValues(clonedPlugin, parent)) { + final Map<String, Object> runValues = view.getRunValues(clonedPlugin, parent); + if (runValues == null) { return; } - new PluginExecutor<G, A, R>(pluginModel, pluginParameters).doRunPlugin(clonedPlugin, view.createConsole(clonedPlugin.getName())); // XXX: drops thread + new PluginExecutor<G, A, R>(pluginModel, pluginParameters).doRunPlugin(clonedPlugin, view.createConsole(clonedPlugin.getName()), runValues); // XXX: drops thread } @ActionMethod Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-02-23 09:04:27 UTC (rev 9638) @@ -25,6 +25,9 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import javax.swing.AbstractButton; import javax.swing.Action; import javax.swing.JComponent; @@ -45,6 +48,7 @@ import net.sf.gridarta.plugin.PluginConsole; import net.sf.gridarta.plugin.PluginModel; import net.sf.gridarta.plugin.PluginModelListener; +import net.sf.gridarta.plugin.parameter.InvalidValueException; import net.sf.gridarta.plugin.parameter.PluginParameter; import net.sf.gridarta.utils.ActionBuilderUtils; import net.sf.gridarta.utils.ResourceIcons; @@ -209,9 +213,16 @@ return pluginConsole; } - public boolean getRunValues(@NotNull final Plugin<G, A, R> plugin, @NotNull final Component parent) { + /** + * Asks the user for input parameter to run a plugin. + * @param plugin the plugin + * @param parent the parent component for dialogs + * @return the input parameters or {@code null} to not run the plugin + */ + @Nullable + public Map<String, Object> getRunValues(@NotNull final Plugin<G, A, R> plugin, @NotNull final Component parent) { if (!plugin.hasParameters()) { - return true; + return Collections.emptyMap(); } final JOptionPane p = new PluginViewPane(); @@ -243,9 +254,21 @@ dialog.setVisible(true); final Object result = p.getValue(); if (!(result instanceof Integer) || (Integer) result != JOptionPane.YES_OPTION) { - return false; + return null; } - return true; + final Map<String, Object> parameterValues = new HashMap<String, Object>(); + for (final PluginParameter<G, A, R, ?> parameter : plugin) { + final String parameterName = parameter.getName(); + final Object parameterValue; + try { + parameterValue = parameter.getValue(); + } catch (final InvalidValueException ex) { + JOptionPane.showMessageDialog(parent, "Invalid value for parameter " + parameterName + ": " + ex.getMessage()); + return null; + } + parameterValues.put(parameterName, parameterValue); + } + return parameterValues; } } Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java 2014-02-22 21:18:37 UTC (rev 9637) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java 2014-02-23 09:04:27 UTC (rev 9638) @@ -28,6 +28,8 @@ import java.io.PrintStream; import java.io.PrintWriter; import java.io.Reader; +import java.util.HashMap; +import java.util.Map; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; import net.sf.gridarta.model.maparchobject.MapArchObject; @@ -79,7 +81,7 @@ } final Plugin<G, A, R> clonedPlugin = modelTemplate.clonePlugin(); - + final Map<String, Object> runValues = new HashMap<String, Object>(); for (final String parameter : parameters) { final String[] tmp = StringUtils.PATTERN_EQUAL.split(parameter, 2); if (tmp.length != 2) { @@ -110,7 +112,20 @@ System.out.println("invalid value " + tmp[1] + " for parameter " + tmp[0]); return 1; } + + runValues.put(clonedParameter.getName(), tmp[1]); } + for (final PluginParameter<G, A, R, ?> parameter : clonedPlugin) { + final String parameterName = parameter.getName(); + if (!runValues.containsKey(parameterName)) { + final Object parameterValue = parameter.getValueOrNull(); + if (parameterValue == null) { + System.err.println("no value for parameter " + parameterName); + return 1; + } + runValues.put(parameterName, parameterValue); + } + } final ConsoleInterface console = new ConsoleInterface() { @@ -145,7 +160,7 @@ } }; - final BshThread<G, A, R> pluginThread = doRunPlugin(clonedPlugin, console); + final BshThread<G, A, R> pluginThread = doRunPlugin(clonedPlugin, console, runValues); if (pluginThread == null) { return 1; } @@ -167,20 +182,20 @@ } /** - * Runs a plugin model. The model is expected to have all needed parameters - * set. + * Runs a plugin model. * @param plugin the plugin model * @param console the console to use + * @param parameters the parameters to pass to the plugin * @return the thread executing the script */ @Nullable - public BshThread<G, A, R> doRunPlugin(@NotNull final Plugin<G, A, R> plugin, @NotNull final ConsoleInterface console) { + public BshThread<G, A, R> doRunPlugin(@NotNull final Plugin<G, A, R> plugin, @NotNull final ConsoleInterface console, @NotNull final Map<String, Object> parameters) { final Interpreter runner = new Interpreter(); runner.setConsole(console); try { pluginParameters.setInterpreterValues(runner, PluginRunMode.BATCH); - for (final PluginParameter<G, A, R, ?> parameter : plugin) { - runner.set(parameter.getName(), parameter.getValueOrNull()); + for (final Map.Entry<String, Object> parameter : parameters.entrySet()) { + runner.set(parameter.getKey(), parameter.getValue()); } } catch (final TargetError ex) { final CharArrayWriter charArrayWriter = new CharArrayWriter(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-22 21:18:43
|
Revision: 9637 http://sourceforge.net/p/gridarta/code/9637 Author: akirschbaum Date: 2014-02-22 21:18:37 +0000 (Sat, 22 Feb 2014) Log Message: ----------- Change PluginParameter interface. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/archetype/ArchetypeParameterView.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/map/MapParameterView.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractPathParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractValuePluginParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/ArchetypeParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameter.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java Added Paths: ----------- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/InvalidValueException.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -60,7 +60,7 @@ * @noinspection TypeMayBeWeakened */ public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter) { - final File value = parameter.getValue(); + final File value = parameter.getValueOrNull(); this.value = new JFileField(parent, null, parameter.getBaseDir(), value == null ? new File("") : value, JFileChooser.FILES_AND_DIRECTORIES); this.value.addDocumentListener(new DocumentListener() { Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/archetype/ArchetypeParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/archetype/ArchetypeParameterView.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/archetype/ArchetypeParameterView.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -75,7 +75,7 @@ value.setEditable(true); value.setEditor(archComboBoxEditor); value.setPreferredSize(new Dimension(value.getPreferredSize().width, archComboBoxEditor.getEditorComponent().getPreferredSize().height)); - value.setSelectedItem(parameter.getValue()); + value.setSelectedItem(parameter.getValueOrNull()); value.addItemListener(new ItemListener() { @Override Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/map/MapParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/map/MapParameterView.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/map/MapParameterView.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -81,7 +81,7 @@ } } }); - value.setSelectedItem(parameter.getValue()); + value.setSelectedItem(parameter.getValueOrNull()); } /** Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/PluginExecutor.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -180,7 +180,7 @@ try { pluginParameters.setInterpreterValues(runner, PluginRunMode.BATCH); for (final PluginParameter<G, A, R, ?> parameter : plugin) { - runner.set(parameter.getName(), parameter.getValue()); + runner.set(parameter.getName(), parameter.getValueOrNull()); } } catch (final TargetError ex) { final CharArrayWriter charArrayWriter = new CharArrayWriter(); Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractPathParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractPathParameter.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractPathParameter.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -69,15 +69,31 @@ /** * {@inheritDoc} */ - @Nullable + @NotNull @Override - public File getValue() { + public File getValue() throws InvalidValueException { final String stringValue = getStringValue(); if (stringValue.isEmpty()) { - return null; + throw new InvalidValueException("not value specified"); } final File file = new File(stringValue); - return file.exists() ? file : null; + if (!file.exists()) { + throw new InvalidValueException("file does not exist: " + stringValue); + } + return file; } + /** + * {@inheritDoc} + */ + @Nullable + @Override + public File getValueOrNull() { + try { + return getValue(); + } catch (final InvalidValueException ignored) { + return null; + } + } + } Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractValuePluginParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractValuePluginParameter.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/AbstractValuePluginParameter.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -55,6 +55,15 @@ } /** + * {@inheritDoc} + */ + @NotNull + @Override + public V getValueOrNull() { + return value; + } + + /** * Updates the parameter value. * @param value the new value */ Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/ArchetypeParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/ArchetypeParameter.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/ArchetypeParameter.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -65,12 +65,26 @@ /** * {@inheritDoc} */ + @NotNull + @Override + public Archetype<G, A, R> getValue() throws InvalidValueException { + final String archetypeName = getStringValue(); + try { + return archetypeSet.getArchetype(archetypeName); + } catch (final UndefinedArchetypeException ex) { + throw new InvalidValueException("undefined archetype: " + archetypeName, ex); + } + } + + /** + * {@inheritDoc} + */ @Nullable @Override - public Archetype<G, A, R> getValue() { + public Archetype<G, A, R> getValueOrNull() { try { - return archetypeSet.getArchetype(getStringValue()); - } catch (final UndefinedArchetypeException ignored) { + return getValue(); + } catch (final InvalidValueException ignored) { return null; } } Added: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/InvalidValueException.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/InvalidValueException.java (rev 0) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/InvalidValueException.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -0,0 +1,54 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.plugin.parameter; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * An exception that is thrown if the string representation of value in a {@link + * PluginParameter} cannot be converted to an object. + * @author Andreas Kirschbaum + */ +public class InvalidValueException extends Exception { + + /** + * The serial version UID. + */ + private static final long serialVersionUID = 1L; + + /** + * Creates a new instance. + * @param reason the reason why the value cannot be created + */ + public InvalidValueException(@NotNull final String reason) { + super(reason); + } + + /** + * Creates a new instance. + * @param reason the reason why the value cannot be created + * @param cause the cause or {@code null} + */ + public InvalidValueException(@NotNull final String reason, @Nullable final Throwable cause) { + super(reason, cause); + } + +} Property changes on: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/InvalidValueException.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapParameter.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -19,11 +19,15 @@ package net.sf.gridarta.plugin.parameter; +import java.io.File; +import java.io.IOException; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.model.mapcontrol.MapControl; import net.sf.gridarta.model.mapmanager.MapManager; +import net.sf.gridarta.model.mapmodel.MapFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -52,13 +56,23 @@ private final MapManager<G, A, R> mapManager; /** + * The {@link PathManager} instance for converting {@link File Files} into + * path names. + */ + @NotNull + private final PathManager pathManager; + + /** * Creates a new instance. * @param mapManager the map manager for converting map paths to map control * instances + * @param pathManager the path manager instance for incverting files into + * path names */ - public MapParameter(@NotNull final MapManager<G, A, R> mapManager) { + public MapParameter(@NotNull final MapManager<G, A, R> mapManager, @NotNull final PathManager pathManager) { super(""); // XXX this.mapManager = mapManager; + this.pathManager = pathManager; } /** @@ -82,21 +96,40 @@ /** * {@inheritDoc} */ - @Nullable + @NotNull @Override - public MapControl<G, A, R> getValue() { + public MapControl<G, A, R> getValue() throws InvalidValueException { final String stringValue = getStringValue(); if (CURRENT_MAP.equals(stringValue)) { - return mapManager.getCurrentMap(); + final MapControl<G, A, R> currentMap = mapManager.getCurrentMap(); + if (currentMap == null) { + throw new InvalidValueException("no map is opened"); + } + currentMap.acquire(); // XXX: this causes a leak + return currentMap; } - for (final MapControl<G, A, R> mapControl : mapManager.getOpenedMaps()) { - if (mapControl.getMapModel().getMapArchObject().getMapName().equalsIgnoreCase(stringValue)) { - return mapControl; - } + final MapFile mapFile = pathManager.getMapFile(new File(stringValue)); + final MapControl<G, A, R> mapControl; + try { + mapControl = mapManager.openMapFile(mapFile, false); + } catch (final IOException ex) { + throw new InvalidValueException("map " + stringValue + " does not exist: " + ex.getMessage(), ex); } + return mapControl; + } - return null; + /** + * {@inheritDoc} + */ + @Nullable + @Override + public MapControl<G, A, R> getValueOrNull() { + try { + return getValue(); + } catch (final InvalidValueException ignored) { + return null; + } } /** Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameter.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameter.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -80,11 +80,19 @@ void setDescription(@NotNull String description); /** - * Returns the current value of the parameter. - * @return the value or {@code null} if invalid. + * Returns the current value of this parameter. + * @return the value + * @throws InvalidValueException if the the value is invalid */ + @NotNull + V getValue() throws InvalidValueException; + + /** + * Returns the current value of this parameter. + * @return the value or {@code null} if the the value is invalid + */ @Nullable - V getValue(); + V getValueOrNull(); /** * Returns the string representation of the current value of the parameter. Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/PluginParameterFactory.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -22,6 +22,7 @@ import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.archetypeset.ArchetypeSet; import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.io.PathManager; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.model.mapmanager.MapManager; import net.sf.gridarta.model.settings.ProjectSettings; @@ -44,16 +45,27 @@ private final ProjectSettings projectSettings; /** + * The {@link PathManager} instance for converting files into path names. + */ + @NotNull + private final PathManager pathManager; + + /** * The {@link PluginParameterCodec} for converting {@link PluginParameter * PluginParameters} to or from XML representation. */ @NotNull private final PluginParameterCodec<G, A, R> codec = new PluginParameterCodec<G, A, R>(); - public PluginParameterFactory(@NotNull final ArchetypeSet<G, A, R> archetypeSet, @NotNull final MapManager<G, A, R> mapManager, @NotNull final ProjectSettings projectSettings) { + /** + * @param pathManager the path manager instance for incverting files into + * path names + */ + public PluginParameterFactory(@NotNull final ArchetypeSet<G, A, R> archetypeSet, @NotNull final MapManager<G, A, R> mapManager, @NotNull final ProjectSettings projectSettings, @NotNull final PathManager pathManager) { this.archetypeSet = archetypeSet; this.mapManager = mapManager; this.projectSettings = projectSettings; + this.pathManager = pathManager; } @NotNull @@ -91,7 +103,7 @@ return new ArchetypeParameter<G, A, R>(archetypeSet); } if (type.equals(MapParameter.PARAMETER_TYPE)) { - return new MapParameter<G, A, R>(mapManager); + return new MapParameter<G, A, R>(mapManager, pathManager); } if (type.equals(MapPathParameter.PARAMETER_TYPE)) { return new MapPathParameter<G, A, R>(projectSettings.getMapsDirectory()); Modified: trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java =================================================================== --- trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/plugin/src/test/java/net/sf/gridarta/plugin/parameter/PluginParameterCodecTest.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -260,7 +260,7 @@ @Test public void testMapToXml1() throws IOException { final TestMapControlCreator mapControlCreator = new TestMapControlCreator(); - final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager()); + final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager()); parameter.setName("Name"); parameter.setDescription("Description"); final StringBuilder sb = new StringBuilder(); @@ -282,7 +282,7 @@ @Test public void testMapToXml2() throws IOException { final TestMapControlCreator mapControlCreator = new TestMapControlCreator(); - final MapParameter<TestGameObject, TestMapArchObject, TestArchetype> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager()); + final MapParameter<TestGameObject, TestMapArchObject, TestArchetype> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager()); parameter.setValueToCurrent(); final StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); @@ -303,7 +303,7 @@ @Test public void testMapToXml3() throws IOException { final TestMapControlCreator mapControlCreator = new TestMapControlCreator(); - final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager()); + final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager()); final File mapDir = new File("/tmp"); final String mapPath = "path/to/map"; mapControlCreator.newMapControl(mapControlCreator.getPathManager().getMapFile(new File(mapDir, mapPath)), "map name", new Size2D(13, 15)); @@ -427,7 +427,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertNull(parameter.getValue()); + Assert.assertNull(parameter.getValueOrNull()); Assert.assertEquals("", parameter.getStringValue()); } @@ -454,7 +454,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertNull(parameter.getValue()); + Assert.assertNull(parameter.getValueOrNull()); Assert.assertEquals("undefined_archetype", parameter.getStringValue()); } @@ -482,7 +482,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertSame(archetype, parameter.getValue()); + Assert.assertSame(archetype, parameter.getValueOrNull()); Assert.assertEquals("existing_archetype", parameter.getStringValue()); } @@ -512,7 +512,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Boolean", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertSame(Boolean.FALSE, parameter.getValue()); + Assert.assertSame(Boolean.FALSE, parameter.getValueOrNull()); Assert.assertEquals("No", booleanParameter.getFalseText()); Assert.assertEquals("Yes", booleanParameter.getTrueText()); } @@ -543,7 +543,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Boolean", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertSame(Boolean.TRUE, parameter.getValue()); + Assert.assertSame(Boolean.TRUE, parameter.getValueOrNull()); Assert.assertEquals("false-text", booleanParameter.getFalseText()); Assert.assertEquals("true-text", booleanParameter.getTrueText()); } @@ -574,7 +574,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Double", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertEquals(0.0, parameter.getValue()); + Assert.assertEquals(0.0, parameter.getValueOrNull()); Assert.assertEquals(0.0, doubleParameter.getMin()); Assert.assertEquals(1.0, doubleParameter.getMax()); } @@ -605,7 +605,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Double", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertEquals(12.34, parameter.getValue()); + Assert.assertEquals(12.34, parameter.getValueOrNull()); Assert.assertEquals(-123.456, doubleParameter.getMin()); Assert.assertEquals(234.0, doubleParameter.getMax()); } @@ -636,7 +636,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Integer", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertEquals(0, parameter.getValue()); + Assert.assertEquals(0, parameter.getValueOrNull()); Assert.assertEquals(-2147483648, integerParameter.getMin()); Assert.assertEquals(2147483647, integerParameter.getMax()); } @@ -667,7 +667,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("java.lang.Integer", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertEquals(2, parameter.getValue()); + Assert.assertEquals(2, parameter.getValueOrNull()); Assert.assertEquals(-123, integerParameter.getMin()); Assert.assertEquals(234, integerParameter.getMax()); } @@ -696,7 +696,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("net.sf.gridarta.model.mapcontrol.MapControl", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - Assert.assertSame(mapControlCreator.getMapManager().getCurrentMap(), parameter.getValue()); + Assert.assertSame(mapControlCreator.getMapManager().getCurrentMap(), parameter.getValueOrNull()); } /** @@ -727,7 +727,7 @@ Assert.assertEquals("Name", parameter.getName()); Assert.assertEquals("net.sf.gridarta.model.mapcontrol.MapControl", parameter.getParameterType()); Assert.assertEquals("Description", parameter.getDescription()); - final MapControl<?, ?, ?> mapControl2 = mapParameter.getValue(); + final MapControl<?, ?, ?> mapControl2 = mapParameter.getValueOrNull(); Assert.assertNotNull(mapControl2); final MapFile mapFile = mapControl2.getMapModel().getMapFile(); Assert.assertNotNull(mapFile); @@ -766,7 +766,7 @@ private static PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> fromXML(@NotNull final TestMapControlCreator mapControlCreator, @NotNull final String string) throws IOException, JDOMException, NoSuchParameterException { final SAXBuilder builder = new SAXBuilder(false); final Document document = builder.build(new StringReader(string)); - final PluginParameterFactory<TestGameObject, TestMapArchObject, TestArchetype> parameterFactory = new PluginParameterFactory<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getArchetypeSet(), mapControlCreator.getMapManager(), mapControlCreator.getProjectSettings()); + final PluginParameterFactory<TestGameObject, TestMapArchObject, TestArchetype> parameterFactory = new PluginParameterFactory<TestGameObject, TestMapArchObject, TestArchetype>(mapControlCreator.getArchetypeSet(), mapControlCreator.getMapManager(), mapControlCreator.getProjectSettings(), mapControlCreator.getPathManager()); final Element element = document.getRootElement(); return parameterFactory.createParameter(element); } Modified: trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java =================================================================== --- trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-02-22 20:32:35 UTC (rev 9636) +++ trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-02-22 21:18:37 UTC (rev 9637) @@ -260,7 +260,7 @@ final Map<String, TreasureTreeNode> specialTreasureLists = loadSpecialTreasureLists(errorView, xmlHelper.getDocumentBuilder(), projectSettings); treasureTree = TreasureLoader.parseTreasures(errorView, specialTreasureLists, configSource, projectSettings); final NamedFilter defaultFilterList = new NamedFilter(Collections.<NamedGameObjectMatcher>emptyList()); - final PluginParameterFactory<G, A, R> pluginParameterFactory = new PluginParameterFactory<G, A, R>(archetypeSet, mapManager, projectSettings); + final PluginParameterFactory<G, A, R> pluginParameterFactory = new PluginParameterFactory<G, A, R>(archetypeSet, mapManager, projectSettings, pathManager); final PluginModelParser<G, A, R> pluginModelParser = new PluginModelParser<G, A, R>(pluginParameterFactory); pluginModel = PluginModelLoader.loadPlugins(pluginParameterFactory, pluginModelParser, errorView, scriptsFile); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-02-22 20:32:38
|
Revision: 9636 http://sourceforge.net/p/gridarta/code/9636 Author: akirschbaum Date: 2014-02-22 20:32:35 +0000 (Sat, 22 Feb 2014) Log Message: ----------- Use correct parameter type. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-22 20:00:05 UTC (rev 9635) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-02-22 20:32:35 UTC (rev 9636) @@ -30,12 +30,11 @@ import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.gameobject.GameObject; import net.sf.gridarta.model.maparchobject.MapArchObject; -import net.sf.gridarta.plugin.parameter.AbstractPathParameter; +import net.sf.gridarta.plugin.parameter.MapPathParameter; import org.jetbrains.annotations.NotNull; /** - * A {@link PluginParameterView} that displays a {@link - * net.sf.gridarta.plugin.parameter.MapPathParameter}. + * A {@link PluginParameterView} that displays a {@link MapPathParameter}. * @author Andreas Kirschbaum */ public class MapPathParameterView<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements PluginParameterView { @@ -58,8 +57,9 @@ * Creates a new instance. * @param parent the parent component for the file chooser * @param parameter the parameter to affect + * @noinspection TypeMayBeWeakened */ - public MapPathParameterView(@NotNull final Component parent, @NotNull final AbstractPathParameter<G, A, R> parameter) { + public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter) { final File value = parameter.getValue(); this.value = new JFileField(parent, null, parameter.getBaseDir(), value == null ? new File("") : value, JFileChooser.FILES_AND_DIRECTORIES); this.value.addDocumentListener(new DocumentListener() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |