|
From: <ox-...@us...> - 2003-06-18 12:21:30
|
Update of /cvsroot/sheets/sheets
In directory sc8-pr-cvs1:/tmp/cvs-serv13022
Modified Files:
Sheets.sheets sheets.mf todo.txt
Log Message:
1. Added new feature to automatically format code using the Jalopy formatting engine. (Just right click on a java fragment and choose "auto format").
2. Fixed a bug in the extend class wizard with single line comments.
3. Updated InstallAnywhere to install legal documents, as well as the latest jars needed for Jalopy.
Index: Sheets.sheets
===================================================================
RCS file: /cvsroot/sheets/sheets/Sheets.sheets,v
retrieving revision 1.62
retrieving revision 1.63
diff -C2 -d -r1.62 -r1.63
*** Sheets.sheets 16 Jun 2003 20:40:00 -0000 1.62
--- Sheets.sheets 18 Jun 2003 12:20:55 -0000 1.63
***************
*** 5160,5163 ****
--- 5160,5164 ----
import org.browsecode.sheets.*;
import org.browsecode.sheets.archive.*;
+ import org.browsecode.sheets.archive.Project;
import org.browsecode.sheets.graph.*;
import java.lang.ref.*;
***************
*** 5172,5175 ****
--- 5173,5178 ----
import org.apache.bcel.util.*;
import org.apache.bcel.classfile.*;
+ import de.hunsicker.jalopy.*;
+ import de.hunsicker.jalopy.storage.*;
section file-header-for nkramer:655
nkramer:1852
***************
*** 48164,48168 ****
new UncommentSelection(),
new TransformFieldToMethod(),
! new ExtendClassMethods()
};
}
--- 48167,48173 ----
new UncommentSelection(),
new TransformFieldToMethod(),
! new ExtendClassMethods(),
! new AutoFormatFragment(),
! new AutoFormatClass()
};
}
***************
*** 53874,53877 ****
--- 53879,53885 ----
if (type == Viewer.NAVIGATION)
new GotoFragmentReferences().addToMenu(menu, omit);
+ if (type == Viewer.COMPONENT && !(this instanceof JavaClassFragment)
+ && !(this instanceof JavaFileHeaderFragment))
+ new AutoFormatFragment().addToMenu(menu, omit);
super.fillContextMenu(menu, type);
}
***************
*** 53884,53889 ****
String[] omit = {"java"};
new GraphJavaHierarchy().addToMenu(menu, omit);
! } else if (type == Viewer.CONTENTS)
new ExtendClassMethods().addToMenu(menu, new String[]{"class"});
super.fillContextMenu(menu, type);
}
--- 53892,53899 ----
String[] omit = {"java"};
new GraphJavaHierarchy().addToMenu(menu, omit);
! } else if (type == Viewer.CONTENTS) {
! new AutoFormatClass().addToMenu(menu, null);
new ExtendClassMethods().addToMenu(menu, new String[]{"class"});
+ }
super.fillContextMenu(menu, type);
}
***************
*** 58079,58084 ****
if (inSingleLineComment && c == '\\n') { // single line comment end
inSingleLineComment = false;
! if (commentStartsWithReturn)
! newHeader.setLength(newHeader.length() - 1);
commentStartsWithReturn = false;
} else if (inMultiLineComment && c == '/' && lastc == '*') { // multi line comment end
--- 58089,58094 ----
if (inSingleLineComment && c == '\\n') { // single line comment end
inSingleLineComment = false;
! if (!commentStartsWithReturn)
! newHeader.append(c);
commentStartsWithReturn = false;
} else if (inMultiLineComment && c == '/' && lastc == '*') { // multi line comment end
***************
*** 58147,58165 ****
section text rgs:10756
protected void ExtendClassMethods.execute (ViewPanel pane, Viewer compView) {
! if (compView instanceof JavaViewer
! && compView.getFragment() instanceof JavaClassFragment) {
! ExtendJavaClassDialog dialog
! = new ExtendJavaClassDialog(Sheets.getRootFrame(),
! (JavaClassFragment)compView.getFragment());
! if (dialog.result != null) {
! JavaViewer view = (JavaViewer) compView;
! int lastLine = view.dispLines.length - 1;
! String repl = view.dispLines[lastLine] + dialog.result;
! view.replaceMultiLines(lastLine, 0,
! StringSplitter.split(repl, '\\n'));
! view.select(0, lastLine + 2, 0, lastLine + 2);
! }
! } else
Console.beep();
}
object rgs:10763
--- 58157,58175 ----
section text rgs:10756
protected void ExtendClassMethods.execute (ViewPanel pane, Viewer compView) {
! if (!(compView instanceof JavaViewer
! && compView.getFragment() instanceof JavaClassFragment)) {
Console.beep();
+ return;
+ }
+ ExtendJavaClassDialog dialog = new ExtendJavaClassDialog(Sheets.getRootFrame(),
+ (JavaClassFragment)compView.getFragment());
+ if (dialog.result != null) {
+ JavaViewer view = (JavaViewer) compView;
+ int lastLine = view.dispLines.length - 1;
+ String repl = view.dispLines[lastLine] + dialog.result;
+ view.replaceMultiLines(lastLine, 0,
+ StringSplitter.split(repl, '\\n'));
+ view.select(0, lastLine + 2, 0, lastLine + 2);
+ }
}
object rgs:10763
***************
*** 82506,82509 ****
--- 82516,82652 ----
the machine you are running on. Use this variable to override the default
line terminator.
+ object schin:1280
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1280
+ class AutoFormatFragment extends ChangeContainerCommand
+ section exports schin:1280
+ schin:1283
+ schin:1281
+ schin:1282
+ schin:1284
+ schin:1289
+ schin:1290
+ schin:1288
+ object schin:1281
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1281
+ public String AutoFormatFragment.getName() {
+ return "auto-format-fragment";
+ }
+ object schin:1282
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1282
+ protected void AutoFormatFragment.execute(ViewPanel pane, Viewer compView) {
+ if (!(compView.getFragment() instanceof JavaFragment)) {
+ Console.beep();
+ return;
+ }
+
+ JavaFragment frag = (JavaFragment)compView.getFragment();
+ if (compView.isBeingEdited()) {
+ JavaViewer view = (JavaViewer)compView;
+ autoFormat(frag, view);
+ } else {
+ autoFormat(frag);
+ }
+ }
+ object schin:1283
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1283
+ static Jalopy AutoFormatFragment.jalopy;
+ object schin:1284
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1284
+ static void AutoFormatFragment.createJalopy() {
+ if (jalopy != null)
+ return;
+ jalopy = new Jalopy();
+ jalopy.setFileFormat("\\n");
+ }
+ object schin:1285
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1285
+ class AutoFormatClass extends ChangeContainerCommand
+ section exports schin:1285
+ schin:1286
+ schin:1287
+ object schin:1286
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1286
+ protected void AutoFormatClass.execute (ViewPanel pane, Viewer compView) {
+ if (!(compView.getFragment() instanceof JavaClassFragment))
+ return;
+
+ JavaClassFragment javaClass = (JavaClassFragment)compView.getFragment();
+ PVector members = javaClass.getMembers();
+ AutoFormatFragment autoFormat = new AutoFormatFragment();
+ for (int i=0; i<members.size(); i++) {
+ JavaFragment member = (JavaFragment)members.elementAt(i);
+ AutoFormatFragment.autoFormat(member);
+ }
+ }
+ object schin:1287
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1287
+ public String AutoFormatClass.getName () {
+ return "auto-format-class";
+ }
+ object schin:1288
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1288
+ protected static void AutoFormatFragment.autoFormat(JavaFragment frag) {
+ String input = frag.toString(Fragment.FULL, false, false);
+ String output = autoFormat(input);
+ if (output == null) {
+ Console.beep();
+ return;
+ }
+ frag.replaceWith(output, false, false, null);
+ }
+ object schin:1289
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1289
+ static String AutoFormatFragment.autoFormat(String input) {
+ createJalopy();
+ String wrappedInput = "public class wrapper {\\n" + input + "\\n}\\n";
+ StringBuffer output = new StringBuffer();
+
+ Convention.getInstance().putInt(ConventionKeys.INDENT_SIZE, Profile.standardJavaIndent);
+ jalopy.setInput(wrappedInput, "");
+ jalopy.setOutput(output);
+ jalopy.format();
+ if (output.length() == 0)
+ return null;
+
+ return output.toString().substring(23, output.length() - 3);
+ }
+ object schin:1290
+ pkg=org.browsecode.javaStuff
+ type=java
+ section text schin:1290
+ protected static void AutoFormatFragment.autoFormat(JavaFragment frag, JavaViewer view) {
+ String[] lines = view.toEditableLines();
+ String joinedLines = StringSplitter.join(lines, '\\n');
+
+ // hack to get rid of unparsable portions of name
+ joinedLines = joinedLines.replaceFirst(frag.getName(view.showingWith("java class name"), view.showingWith("java package name"), false), frag.getName(false, false, false));
+
+ String output = autoFormat(joinedLines);
+ if (output == null) {
+ Console.beep();
+ return;
+ }
+ view.replaceMultiLines(0, lines.length - 1, JavaFragment.adjustLines(output, (short)(Profile.standardJavaIndent + 1)));
+ }
object sjc:1
pkg=org.browsecode.sheets.dicer
***************
*** 97959,97962 ****
--- 98102,98118 ----
nkramer:29073
nkramer:29071
+ lightWeight:separator
+ schin:1280
+ schin:1283
+ schin:1284
+ schin:1289
+ schin:1290
+ schin:1288
+ schin:1281
+ schin:1282
+ lightWeight:separator
+ schin:1285
+ schin:1286
+ schin:1287
object nkramer:2685
title=JSTExpression
Index: sheets.mf
===================================================================
RCS file: /cvsroot/sheets/sheets/sheets.mf,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** sheets.mf 31 Oct 2002 20:15:23 -0000 1.3
--- sheets.mf 18 Jun 2003 12:20:56 -0000 1.4
***************
*** 2,4 ****
Main-Class: org.browsecode.sheets.Sheets
Created-By: 1.2 (Sun Microsystems Inc.)
! Class-Path: ox.jar pat.jar kunststoff.jar jlfgr-1_0.jar antlr.jar bcel.jar
--- 2,4 ----
Main-Class: org.browsecode.sheets.Sheets
Created-By: 1.2 (Sun Microsystems Inc.)
! Class-Path: ox.jar kunststoff.jar jlfgr-1_0.jar antlrall.jar bcel.jar jalopy.jar log4j
Index: todo.txt
===================================================================
RCS file: /cvsroot/sheets/sheets/todo.txt,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** todo.txt 12 Jun 2003 05:13:18 -0000 1.28
--- todo.txt 18 Jun 2003 12:20:56 -0000 1.29
***************
*** 51,54 ****
--- 51,59 ----
* Refresh problem on main sheet after wizard closes
+ File Mapping:
+ * Should go directly to the file opened after import
+ * Should suppress the sheets starting dialog and the file import progress dialog
+ * Should be intelligent about reimporting the same file twice
+
Nice ideas:
Extend methods dialog should have an easy way to insert appropriate constructors.
|