Skip to content

Commit d832343

Browse files
committed
Improve AccountWindow, minor refactorings
1 parent 461b9d4 commit d832343

File tree

13 files changed

+139
-95
lines changed

13 files changed

+139
-95
lines changed

convex-core/src/main/java/convex/core/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ public class Constants {
162162
*/
163163
public static final long PRINT_LIMIT = 4096;
164164

165-
public static final AString PRINT_EXCEEDED_MESSAGE = Strings.create("<<Print limit exceeded>>");
165+
public static final String PRINT_EXCEEDED_STRING = "<<Print limit exceeded>>";
166+
public static final AString PRINT_EXCEEDED_MESSAGE = Strings.create(PRINT_EXCEEDED_STRING);
166167

167168
/**
168169
* Default port for Convex Peers

convex-core/src/main/java/convex/core/data/Cells.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,16 @@ public static ABlobLike<CVMLong> getEncoding(ACell a) {
166166
return a.getEncoding();
167167
}
168168

169+
/**
170+
* Get the full storage size of a value, including size of an embedded encoding
171+
* @param a
172+
* @return
173+
*/
174+
public static long storageSize(ACell a) {
175+
if (a==null) return 1;
176+
long memSize=a.getMemorySize();
177+
if (a.isEmbedded()) memSize+=a.getEncodingLength();
178+
return memSize;
179+
}
180+
169181
}

convex-core/src/main/java/convex/core/lang/Juice.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import convex.core.data.ACell;
55
import convex.core.data.ACountable;
66
import convex.core.data.ADataStructure;
7+
import convex.core.data.Cells;
78
import convex.core.data.prim.ANumeric;
89
import convex.core.data.prim.CVMBigInteger;
910
import convex.core.data.prim.CVMDouble;
1011
import convex.core.transactions.ATransaction;
11-
import convex.core.util.Utils;
1212

1313
/**
1414
* Static class defining juice costs for executable operations.
@@ -534,7 +534,7 @@ public static long calcAvailable(long balance, long juicePrice) {
534534
* @return
535535
*/
536536
public static long priceMemorySize(ACell a) {
537-
return Juice.mul(Juice.TRANSACTION_PER_BYTE, Utils.fullMemorySize(a));
537+
return Juice.mul(Juice.TRANSACTION_PER_BYTE, Cells.storageSize(a));
538538
}
539539

540540
public static long priceTransaction(ATransaction tx) {

convex-core/src/main/java/convex/core/lang/RT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1036,7 +1036,9 @@ public static String toString(ACell a) {
10361036
* @return Java String representation. May be "nil". May include message if print limit exceeded
10371037
*/
10381038
public static String toString(ACell a, long limit) {
1039-
return RT.print(a,limit).toString();
1039+
AString s=RT.print(a,limit);
1040+
if (s==null) return Constants.PRINT_EXCEEDED_STRING;
1041+
return s.toString();
10401042
}
10411043

10421044
/**

convex-core/src/main/java/convex/core/util/Utils.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,18 +1428,6 @@ public static String joinStrings(List<String> strings, String separator) {
14281428
return sb.toString();
14291429
}
14301430

1431-
/**
1432-
* Get the full memory size of a value, including size of an embedded encoding
1433-
* @param a
1434-
* @return
1435-
*/
1436-
public static long fullMemorySize(ACell a) {
1437-
if (a==null) return 1;
1438-
long memSize=a.getMemorySize();
1439-
if (a.isEmbedded()) memSize+=a.getEncodingLength();
1440-
return memSize;
1441-
}
1442-
14431431
/**
14441432
* Long computation of (a*b)/c. Arguments and result must be in range 0..Long.MAX_VALUE
14451433
* @param a First multiplicand

convex-core/src/test/java/convex/core/TransactionTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import convex.core.transactions.Multi;
3030
import convex.core.transactions.Transactions;
3131
import convex.core.transactions.Transfer;
32-
import convex.core.util.Utils;
3332
import convex.test.Samples;
3433

3534
import static convex.test.Assertions.*;
@@ -60,7 +59,7 @@ public void testTransfer() {
6059
long IBAL=state().getAccount(HERO).getBalance();
6160
Transfer t1=Transfer.create(HERO, 1, VILLAIN, AMT);
6261

63-
long memSize=Utils.fullMemorySize(t1);
62+
long memSize=Cells.storageSize(t1);
6463

6564
State s=apply(t1);
6665
long expectedFees=(Juice.TRANSACTION+Juice.TRANSFER+Juice.TRANSACTION_PER_BYTE*memSize)*JP;

convex-core/src/test/java/convex/core/data/ObjectsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public static void doCellTests(ACell a) {
6969

7070
private static void doMemorySizeTests(ACell a) {
7171
long ms=a.calcMemorySize();
72-
long fms=Utils.fullMemorySize(a);
72+
long fms=Cells.storageSize(a);
7373
assertEquals(ms,a.getMemorySize());
7474
int rc=a.getRefCount();
7575
long elen=a.getEncodingLength();
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package convex.gui.actor;
2+
3+
import java.awt.BorderLayout;
4+
import java.awt.Dimension;
5+
6+
import javax.swing.JPanel;
7+
import javax.swing.JTextArea;
8+
9+
import convex.core.State;
10+
import convex.core.data.AccountStatus;
11+
import convex.core.data.Address;
12+
import convex.core.data.Cells;
13+
import convex.core.lang.RT;
14+
import convex.core.text.Text;
15+
import convex.gui.components.models.StateModel;
16+
import convex.gui.utils.Toolkit;
17+
18+
@SuppressWarnings("serial")
19+
public class AccountInfoPanel extends JPanel {
20+
21+
protected Address addr;
22+
protected JTextArea infoArea;
23+
24+
public AccountInfoPanel(StateModel<State> manager, Address address) {
25+
this.addr = address;
26+
setLayout(new BorderLayout(0, 0));
27+
28+
this.setPreferredSize(new Dimension(600, 400));
29+
30+
infoArea = new JTextArea();
31+
add(infoArea, BorderLayout.CENTER);
32+
infoArea.setBackground(null);
33+
infoArea.setFont(Toolkit.SMALL_MONO_FONT);
34+
35+
manager.addPropertyChangeListener(e -> {
36+
updateInfo((State) e.getNewValue());
37+
});
38+
updateInfo(manager.getValue());
39+
}
40+
41+
private void updateInfo(State latestState) {
42+
43+
AccountStatus as = latestState.getAccount(addr);
44+
45+
infoArea.setText(getInfoText(addr,as));
46+
}
47+
48+
public static String getInfoText(Address actor,AccountStatus as) {
49+
if (as==null) {
50+
return "Account "+actor+" does not exist in current State\n";
51+
}
52+
53+
StringBuilder sb = new StringBuilder();
54+
55+
sb.append("Account: " + actor.toString() + "\n");
56+
sb.append("\n");
57+
sb.append("Account Key: " + as.getAccountKey() + "\n");
58+
sb.append("Sequence: " + as.getSequence() + "\n");
59+
sb.append("Balance: " + Text.toFriendlyBalance(as.getBalance()) + "\n");
60+
sb.append("Mem. Allowance: " + Text.toFriendlyNumber(as.getMemory()) + "\n");
61+
sb.append("Allowance: " + as.getMemory() + "\n");
62+
sb.append("Controller: " + as.getController() + "\n");
63+
sb.append("Parent: " + as.getParent() + "\n");
64+
sb.append("Env Size: " + RT.count(as.getEnvironment()) + "\n");
65+
sb.append("Holding Size: " + RT.count(as.getHolding(actor)) + "\n");
66+
67+
sb.append("\n");
68+
69+
sb.append("Storage Size: "+Cells.storageSize(as)+"\n");
70+
71+
sb.append("\n");
72+
73+
return sb.toString();
74+
}
75+
76+
}

convex-gui/src/main/java/convex/gui/actor/ActorWindow.java renamed to convex-gui/src/main/java/convex/gui/actor/AccountWindow.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,26 @@
1212
import net.miginfocom.swing.MigLayout;
1313

1414
@SuppressWarnings("serial")
15-
public class ActorWindow extends AbstractGUI {
16-
Address contract;
15+
public class AccountWindow extends AbstractGUI {
16+
Address account;
1717

1818
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
1919

20-
public ActorWindow(Convex convex,StateModel<State> manager, Address contract) {
21-
super ("Contract view - " + contract);
22-
this.contract = contract;
20+
public AccountWindow(Convex convex,StateModel<State> manager, Address account) {
21+
super ("Account view - " + account);
22+
this.account = account;
2323
setLayout(new MigLayout());
24-
AccountStatus as = manager.getValue().getAccount(contract);
24+
AccountStatus as = manager.getValue().getAccount(account);
2525

2626
manager.addPropertyChangeListener(e -> {
2727

2828
});
2929

3030
add(tabbedPane, "dock center");
3131

32-
tabbedPane.add("Overview", new ActorInfoPanel(manager, contract));
33-
tabbedPane.add("Environment", new StateTreePanel(as.getEnvironment()));
34-
tabbedPane.add("Operations", new ActorInvokePanel(convex,manager, contract));
32+
tabbedPane.add("Overview", new AccountInfoPanel(manager, account));
33+
tabbedPane.add("Environment", new StateTreePanel((as==null)?null:as.getEnvironment()));
34+
tabbedPane.add("Operations", new ActorInvokePanel(convex,manager, account));
3535
}
3636

3737
}

convex-gui/src/main/java/convex/gui/actor/ActorInfoPanel.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)