|
1 | 1 | package convex.gui.peer;
|
2 | 2 |
|
| 3 | +import java.io.IOException; |
| 4 | +import java.nio.file.Path; |
3 | 5 | import java.util.Objects;
|
4 | 6 |
|
5 | 7 | import javax.swing.JButton;
|
| 8 | +import javax.swing.JFileChooser; |
6 | 9 | import javax.swing.JMenuItem;
|
| 10 | +import javax.swing.JOptionPane; |
7 | 11 | import javax.swing.JPanel;
|
8 | 12 | import javax.swing.JPopupMenu;
|
9 | 13 |
|
|
20 | 24 | import convex.core.cvm.PeerStatus;
|
21 | 25 | import convex.core.cvm.State;
|
22 | 26 | import convex.core.data.ACell;
|
| 27 | +import convex.core.data.AMap; |
23 | 28 | import convex.core.data.AccountKey;
|
| 29 | +import convex.core.data.Keyword; |
24 | 30 | import convex.core.text.Text;
|
| 31 | +import convex.core.util.FileUtils; |
| 32 | +import convex.core.util.Utils; |
25 | 33 | import convex.etch.EtchStore;
|
26 | 34 | import convex.gui.components.BaseImageButton;
|
27 | 35 | import convex.gui.components.BaseListComponent;
|
@@ -166,6 +174,15 @@ public PeerComponent(ConvexLocal value) {
|
166 | 174 | new WalletApp(connectLocalControllerWallet(server)).run();
|
167 | 175 | });
|
168 | 176 | popupMenu.add(walletButton);
|
| 177 | + |
| 178 | + JMenuItem saveButton = new JMenuItem("Save Peer Data...",Toolkit.menuIcon(0xe161)); |
| 179 | + saveButton.addActionListener(e -> savePeerData(this.convex)); |
| 180 | + popupMenu.add(saveButton); |
| 181 | + |
| 182 | + JMenuItem loadButton = new JMenuItem("Load Peer Data...",Toolkit.menuIcon(0xeaf3)); |
| 183 | + loadButton.addActionListener(e -> loadPeerData(this.convex)); |
| 184 | + popupMenu.add(loadButton); |
| 185 | + |
169 | 186 |
|
170 | 187 |
|
171 | 188 | DropdownMenu dm = new DropdownMenu(popupMenu);
|
@@ -193,6 +210,32 @@ public PeerComponent(ConvexLocal value) {
|
193 | 210 | updateDescription();
|
194 | 211 | }
|
195 | 212 |
|
| 213 | + private void loadPeerData(ConvexLocal convex) { |
| 214 | + JFileChooser chooser=Toolkit.createCAD3Chooser(null); |
| 215 | + int result=chooser.showOpenDialog(this); |
| 216 | + if (result==JFileChooser.APPROVE_OPTION) { |
| 217 | + System.out.println("Loading: "+chooser.getSelectedFile()); |
| 218 | + } |
| 219 | + } |
| 220 | + |
| 221 | + private void savePeerData(ConvexLocal convex) { |
| 222 | + Peer p=convex.getLocalServer().getPeer(); |
| 223 | + AMap<Keyword, ACell> data = p.toData(); |
| 224 | + |
| 225 | + String fileName="peer-data-"+p.getPeerKey().toHexString(8)+"-"+Utils.timeString()+".cad3"; |
| 226 | + JFileChooser chooser=Toolkit.createCAD3Chooser(fileName); |
| 227 | + |
| 228 | + int result=chooser.showSaveDialog(this); |
| 229 | + if (result==JFileChooser.APPROVE_OPTION) { |
| 230 | + Path path =chooser.getSelectedFile().toPath(); |
| 231 | + try { |
| 232 | + FileUtils.writeCAD3(path, data); |
| 233 | + } catch (IOException e) { |
| 234 | + JOptionPane.showMessageDialog(this, "Peer data save failed:\n "+e,"Save Error",JOptionPane.ERROR_MESSAGE); |
| 235 | + } |
| 236 | + } |
| 237 | + } |
| 238 | + |
196 | 239 | protected void updateDescription() {
|
197 | 240 | String current=description.getText();
|
198 | 241 | String updated=getPeerDescription();
|
|
0 commit comments