Skip to content
This repository has been archived by the owner on Jan 9, 2024. It is now read-only.

Commit

Permalink
refactor UI
Browse files Browse the repository at this point in the history
- delete connect view
- add server side view
- support multi server
  • Loading branch information
vran-dev committed Sep 30, 2019
1 parent 0570354 commit 9fae9fa
Show file tree
Hide file tree
Showing 16 changed files with 805 additions and 403 deletions.
21 changes: 10 additions & 11 deletions src/main/java/cc/cc1234/main/PrettyZooApplication.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cc.cc1234.main;

import cc.cc1234.main.controller.ConnectViewController;
import cc.cc1234.main.controller.NodeTreeViewController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
Expand All @@ -20,19 +20,18 @@ public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
final URL resource = Thread.currentThread().getContextClassLoader().getResource("icon.jpg");
primaryStage.getIcons().add(new Image(resource.openStream()));
showConnectView();
showNodeTreeView(primaryStage);
}

private void showConnectView() throws IOException {
public static void showNodeTreeView(Stage primary) throws IOException {
final FXMLLoader loader = new FXMLLoader();
loader.setLocation(PrettyZooApplication.class.getResource("controller/ConnectView.fxml"));
final AnchorPane panel = loader.load();
final Scene scene = new Scene(panel);
primaryStage.setScene(scene);
primaryStage.show();

ConnectViewController controller = loader.getController();
controller.setPrimaryStage(primaryStage);
loader.setLocation(NodeTreeViewController.class.getResource("NodeTreeView.fxml"));
final AnchorPane anchorPane = loader.load();
final Scene scene = new Scene(anchorPane);
primary.setScene(scene);
NodeTreeViewController controller = loader.getController();
controller.setPrimaryStage(primary);
primary.show();
}

public static void main(String[] args) {
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/cc/cc1234/main/cache/TreeItemCache.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package cc.cc1234.main.cache;

import javafx.scene.control.TreeItem;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class TreeItemCache {

private static final Map<String, Map<String, TreeItem>> CACHE = new ConcurrentHashMap<>();

private static final TreeItemCache TREE_ITEM_CACHE = new TreeItemCache();

public static TreeItemCache getInstance() {
return TREE_ITEM_CACHE;
}

public boolean hasServer(String server) {
return CACHE.containsKey(server);
}

public void cacheItemByPath(String server, String path, TreeItem item) {
final Map<String, TreeItem> map = CACHE.computeIfAbsent(server, key -> new ConcurrentHashMap<>());
map.put(path, item);
}

public TreeItem getItemByPath(String server, String path) {
return CACHE.get(server).get(path);
}
}
30 changes: 30 additions & 0 deletions src/main/java/cc/cc1234/main/cache/ZkClientCache.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package cc.cc1234.main.cache;

import org.apache.curator.framework.CuratorFramework;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class ZkClientCache {

private static final Map<String, CuratorFramework> CACHE = new ConcurrentHashMap<>();

private static final ZkClientCache ZK_CLIENT_CACHE = new ZkClientCache();

public static ZkClientCache getInstance() {
return ZK_CLIENT_CACHE;
}

public boolean contains(String server) {
return CACHE.containsKey(server);
}

public CuratorFramework get(String server) {
return CACHE.get(server);
}

public CuratorFramework put(String server, CuratorFramework client) {
return CACHE.put(server, client);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,13 @@ private void onNodeAddAction() {
final String nodeName = nodeNameTextField.getText();
final String nodeData = nodeDataTextArea.getText();
try {
String path = parentPathLabel.getText() + "/" + nodeName;

String path = parentPathLabel.getText();
if (parentPathLabel.getText().endsWith("/")) {
path += nodeName;
} else {
path += "/" + nodeName;
}
curatorFramework.create()
.withMode(createMode())
// must use Platform to close stage
Expand Down
109 changes: 109 additions & 0 deletions src/main/java/cc/cc1234/main/controller/AddServerViewController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package cc.cc1234.main.controller;

import cc.cc1234.main.history.History;
import cc.cc1234.main.model.ZkServer;
import javafx.animation.FadeTransition;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.Window;
import javafx.util.Duration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;

public class AddServerViewController {

private static final Logger LOG = LoggerFactory.getLogger(AddServerViewController.class);

@FXML
private TextField serverTextField;

private Stage stage;


private TableView<ZkServer> serversTableView;

public static void show(TableView<ZkServer> serversTableView) {
String fxml = "AddServerView.fxml";
final FXMLLoader loader = new FXMLLoader();
loader.setLocation(AddServerViewController.class.getResource(fxml));
AnchorPane panel = null;
try {
panel = loader.load();
} catch (IOException e) {
LOG.error("init AddServerView failed", e);
return;
}

final Scene scene = new Scene(panel);
scene.setFill(Color.TRANSPARENT);
final Stage stage = new Stage();
stage.setScene(scene);
stage.initStyle(StageStyle.TRANSPARENT);
stage.initModality(Modality.APPLICATION_MODAL);

final AddServerViewController controller = loader.getController();
controller.setStage(stage);
controller.setServersTableView(serversTableView);
stage.setAlwaysOnTop(true);

final Window parent = serversTableView.getParent().getScene().getWindow();
double x = parent.getX() + parent.getWidth() / 2 - panel.getPrefWidth() / 2;
double y = parent.getY() + parent.getHeight() / 2 - panel.getPrefHeight() / 2;
stage.setX(x);
stage.setY(y);
animation(panel);
stage.show();
}

private static void animation(Node node) {
final FadeTransition transition = new FadeTransition();
transition.setFromValue(0.3);
transition.setToValue(1.0);
transition.setDuration(Duration.millis(800));
transition.setNode(node);
transition.play();
}


public void setStage(Stage stage) {
this.stage = stage;
}

public void setServersTableView(TableView<ZkServer> serversTableView) {
this.serversTableView = serversTableView;
}

@FXML
private void onCancel() {
stage.close();
}

@FXML
private void onConfirm() {
final String server = serverTextField.getText();
if (server == null || server.trim().isEmpty()) {
VToast.toastFailure(stage, "server must not be empty");
return;
}
final History history = History.createIfAbsent(History.SERVER_HISTORY);
if (history.contains(server)) {
VToast.toastFailure(stage, "server exists!");
return;
}
history.save(server, "0");
serversTableView.getItems().add(new ZkServer(server));
VToast.toastSuccess(stage);
stage.close();
}
}
115 changes: 0 additions & 115 deletions src/main/java/cc/cc1234/main/controller/ConnectViewController.java

This file was deleted.

Loading

0 comments on commit 9fae9fa

Please sign in to comment.