Commit 45a76bf4 by Nepxion

增加console-desktop模块

parent fc630c5e
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<artifactId>discovery-console-desktop</artifactId>
<name>Nepxion Discovery Console Desktop</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<description>Nepxion Discovery is an enhancement for Spring Cloud Discovery</description>
<url>http://www.nepxion.com</url>
<parent>
<groupId>com.nepxion</groupId>
<artifactId>discovery</artifactId>
<version>4.0.2</version>
</parent>
<properties>
<commons.configuration.version>1.10</commons.configuration.version>
<swing.worker.version>1.2</swing.worker.version>
<swingx.version>1.0</swingx.version>
<jide.version>2.9.7</jide.version>
<l2fprod.version>7.3</l2fprod.version>
<jcalendar.version>1.3.4.200905090658</jcalendar.version>
<nepxion.swing.version>1.0.0</nepxion.swing.version>
<nepxion.util.version>1.0.0</nepxion.util.version>
<nepxion.cots.version>1.0.0</nepxion.cots.version>
<twaver.version>3.7</twaver.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>${commons.configuration.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>${disruptor.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>jdesktop</groupId>
<artifactId>swing-worker</artifactId>
<version>${swing.worker.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jdesktop-swing-worker-${swing.worker.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>jdesktop</groupId>
<artifactId>swingx</artifactId>
<version>${swingx.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jdesktop-swingx-${swingx.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>jide</groupId>
<artifactId>oss</artifactId>
<version>${jide.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jide-oss-${jide.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>l2fprod</groupId>
<artifactId>common-all</artifactId>
<version>${l2fprod.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/l2fprod-common-all-${l2fprod.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>jcalendar</groupId>
<artifactId>jcalendar</artifactId>
<version>${jcalendar.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jcalendar-${jcalendar.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>swing</artifactId>
<version>${nepxion.swing.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nepxion-swing-${nepxion.swing.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>util</artifactId>
<version>${nepxion.util.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nepxion-util-${nepxion.util.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>cots</artifactId>
<version>${nepxion.cots.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nepxion-cots-${nepxion.cots.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>twaver</groupId>
<artifactId>twaver</artifactId>
<version>${twaver.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/twaver-${twaver.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>twaver</groupId>
<artifactId>twaver-gis</artifactId>
<version>${twaver.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/twaver-gis-${twaver.version}.jar</systemPath>
</dependency>
<dependency>
<groupId>twaver</groupId>
<artifactId>twaver-layouter</artifactId>
<version>${twaver.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/twaver-layouter-${twaver.version}.jar</systemPath>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/assembly/dist.xml</descriptor>
</descriptors>
<encoding>${project.build.sourceEncoding}</encoding>
<testFailureIgnore>true</testFailureIgnore>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
执行maven clean install,将会在target目录下创建discovery-console-desktop-[version]-release和discovery-console-desktop-[version]-release.zip,点里面的bat运行即可
\ No newline at end of file
@echo on
@echo on
@echo =============================================================
@echo $ $
@echo $ Nepxion Discovery $
@echo $ $
@echo $ $
@echo $ $
@echo $ Nepxion Studio All Right Reserved $
@echo $ Copyright (C) 2017-2050 $
@echo $ $
@echo =============================================================
@echo.
@echo off
@title Nepxion Discovery
@color 0a
@set CLASSPATH=./conf/;./lib/*
@set PATH=
call:JAVA_HOME_CHECK
:JAVA_HOME_CHECK
if "%JAVA_HOME%"=="" goto ECHO_JAVA_HOME_CHECK_EXIT
@rem echo Found Java Home=%JAVA_HOME%
echo JAVA_HOME=%JAVA_HOME%
goto SET_CLASSPATH_AND_RUN
:ECHO_JAVA_HOME_CHECK_EXIT
@rem echo Please set JAVA_HOME
echo JAVA_HOME
goto EXIT
:SET_CLASSPATH_AND_RUN
"%JAVA_HOME%\bin\java" -Dfile.encoding=GBK -Ddefault.client.encoding=GBK -Duser.language=zh -Duser.region=CN -Djava.security.policy=java.policy -Djava.library.path=%PATH% -Xms128m -Xmx512m -classpath %CLASSPATH% com.nepxion.discovery.console.desktop.ConsoleLauncher
:PAUSE
pause;
:EXIT
exit;
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>release</id>
<formats>
<format>zip</format>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>src/assembly</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.bat</include>
</includes>
<fileMode>0744</fileMode>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/conf</outputDirectory>
<includes>
<include>*.properties</include>
</includes>
<fileMode>0744</fileMode>
</fileSet>
<fileSet>
<directory>lib</directory>
<outputDirectory>/lib</outputDirectory>
</fileSet>
</fileSets>
</assembly>
\ No newline at end of file
package com.nepxion.discovery.console.desktop;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import com.nepxion.discovery.console.desktop.icon.ConsoleIconFactory;
import com.nepxion.discovery.console.desktop.locale.ConsoleLocale;
import com.nepxion.swing.frame.JBasicFrame;
import com.nepxion.swing.framework.reflection.JReflectionHierarchy;
import com.nepxion.swing.style.texture.shrink.JBlackHeaderTextureStyle;
import com.nepxion.swing.style.texture.shrink.JGreenOutlookTextureStyle;
public class ConsoleFrame extends JBasicFrame {
private static final long serialVersionUID = 1L;
public ConsoleFrame() {
super(ConsoleLocale.getString("title"), ConsoleIconFactory.getSwingIcon("ribbon/navigator_nepxion.png"), new Dimension(1280, 900));
}
public void launch() {
ConsoleHierarchy deployHierarchy = new ConsoleHierarchy(new JBlackHeaderTextureStyle(), new JGreenOutlookTextureStyle());
JReflectionHierarchy reflectionHierarchy = new JReflectionHierarchy(20, 20);
reflectionHierarchy.setContentPane(deployHierarchy);
getContentPane().add(reflectionHierarchy);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
}
});
setTitle(ConsoleLocale.getString("title"));
setExtendedState(ConsoleFrame.MAXIMIZED_BOTH);
setVisible(true);
toFront();
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import com.nepxion.discovery.console.desktop.context.UIContext;
import com.nepxion.discovery.console.desktop.icon.ConsoleIconFactory;
import com.nepxion.discovery.console.desktop.locale.ConsoleLocale;
import com.nepxion.discovery.console.desktop.toggle.ConsoleToggleConstants;
import com.nepxion.discovery.console.desktop.toggle.ConsoleToggleListener;
import com.nepxion.swing.element.ElementNode;
import com.nepxion.swing.list.toggle.JToggleList;
import com.nepxion.swing.shrinkbar.JShrinkBar;
import com.nepxion.swing.shrinkbar.JShrinkOutlook;
import com.nepxion.swing.shrinkbar.JShrinkOutlookBar;
import com.nepxion.swing.shrinkbar.ShrinkListCellRenderer;
import com.nepxion.swing.shrinkbar.ShrinkOutlookSelectionListener;
import com.nepxion.swing.style.texture.shrink.IHeaderTextureStyle;
import com.nepxion.swing.style.texture.shrink.IOutlookTextureStyle;
import com.nepxion.util.data.CollectionUtil;
public class ConsoleHierarchy extends JPanel {
private static final long serialVersionUID = 1L;
private JShrinkBar shrinkContentBar;
private JShrinkOutlookBar shrinkOutlookBar;
public ConsoleHierarchy(IHeaderTextureStyle headerTextureStyle, IOutlookTextureStyle outlookTextureStyle) {
shrinkContentBar = new JShrinkBar(JShrinkBar.PLACEMENT_EAST, JShrinkBar.CONTENT_PANE_TYPE_LABEL, headerTextureStyle);
shrinkContentBar.setShrinkable(false);
shrinkContentBar.setTitle(ConsoleLocale.getString("content_bar"));
shrinkContentBar.setToolTipText(ConsoleLocale.getString("content_bar"));
shrinkContentBar.setIcon(ConsoleIconFactory.getSwingIcon("paste.png"));
shrinkContentBar.setTitleFont(new Font(UIContext.getFontName(), Font.BOLD, UIContext.getLargeFontSize()));
shrinkContentBar.getShrinkHeader().getLabel().addMouseListener(new ShrinkContentBarMouseListener());
shrinkOutlookBar = new JShrinkOutlookBar(JShrinkBar.PLACEMENT_WEST, JShrinkBar.CONTENT_PANE_TYPE_LABEL, headerTextureStyle, outlookTextureStyle);
shrinkOutlookBar.setTitle(ConsoleLocale.getString("navigator_bar"));
shrinkOutlookBar.setToolTipText(ConsoleLocale.getString("navigator_bar"));
shrinkOutlookBar.setIcon(ConsoleIconFactory.getSwingIcon("hierarchy.png"));
shrinkOutlookBar.setTitleFont(new Font(UIContext.getFontName(), Font.BOLD, UIContext.getLargeFontSize()));
shrinkOutlookBar.setPreferredSize(new Dimension(210, shrinkOutlookBar.getPreferredSize().height));
createServiceControlShrinkOutlook(shrinkOutlookBar);
shrinkOutlookBar.getShrinkOutlook(0).setSelected(true);
setLayout(new BorderLayout(5, 5));
add(shrinkContentBar, BorderLayout.CENTER);
add(shrinkOutlookBar, BorderLayout.WEST);
}
private JShrinkOutlook createServiceControlShrinkOutlook(JShrinkOutlookBar shrinkOutlookBar) {
List<ElementNode> elementNodes = new ArrayList<ElementNode>();
elementNodes.add(new ElementNode(ConsoleToggleConstants.SERVICE_TOPOLOGY, ConsoleLocale.getString(ConsoleToggleConstants.SERVICE_TOPOLOGY), ConsoleIconFactory.getSwingIcon("component/ui_16.png"), ConsoleLocale.getString(ConsoleToggleConstants.SERVICE_TOPOLOGY)));
JToggleList list = createList(elementNodes);
list.setSelectedIndex(0);
JShrinkOutlook shrinkOutlook = shrinkOutlookBar.addShrinkOutlook(ConsoleLocale.getString("service_control"), ConsoleIconFactory.getSwingIcon("stereo/favorite_16.png"), ConsoleIconFactory.getSwingIcon("stereo/favorite_add_16.png"), ConsoleLocale.getString("service_control"), new Font(UIContext.getFontName(), Font.BOLD, UIContext.getMiddleFontSize()));
shrinkOutlook.setContentPane(list);
shrinkOutlook.addPropertyChangeListener(new OutlookSelectionListener());
return shrinkOutlook;
}
@SuppressWarnings("unchecked")
private JToggleList createList(List<ElementNode> elementNodes) {
JToggleList list = new JToggleList(CollectionUtil.parseVector(elementNodes));
list.setSelectionMode(JToggleList.SINGLE_SELECTION);
list.setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 0));
list.setCellRenderer(new ShrinkListCellRenderer(list, BorderFactory.createEmptyBorder(0, 10, 0, 0), 22));
list.setToggleContentPanel(shrinkContentBar);
list.setToggleAdapter(new ConsoleToggleListener(list));
return list;
}
private class ShrinkContentBarMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 1) {
boolean isShrinked = !shrinkOutlookBar.isShrinked();
shrinkOutlookBar.setShrinked(isShrinked);
}
}
}
private class OutlookSelectionListener extends ShrinkOutlookSelectionListener {
public void selectionStateChanged(JShrinkOutlook shrinkOutlook) {
JToggleList toggleList = (JToggleList) shrinkOutlook.getContentPane();
toggleList.executeSelection(-1, toggleList.getSelectedIndex());
}
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import javax.swing.SwingUtilities;
import com.nepxion.discovery.console.desktop.context.ContextInitializer;
public class ConsoleLauncher {
public static void main(String[] args) {
ContextInitializer.initialize();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ConsoleFrame consoleFrame = new ConsoleFrame();
consoleFrame.launch();
}
});
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.context;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
public class ContextInitializer {
public static void initialize() {
PropertiesContext.initialize();
DataContext.initialize();
UIContext.initialize();
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.context;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import com.nepxion.swing.exception.ExceptionTracerContext;
import com.nepxion.util.encoder.EncoderContext;
import com.nepxion.util.locale.LocaleContext;
public class DataContext {
public static final String CHARSET = "UTF-8";
public static final String LOCALE = "zh_CN";
public static void initialize() {
initializeEncoder();
initializeLocale();
initializeTracer();
}
private static void initializeEncoder() {
EncoderContext.registerIOCharset(CHARSET);
}
private static void initializeLocale() {
LocaleContext.registerLocale(LOCALE);
}
private static void initializeTracer() {
ExceptionTracerContext.register(true);
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.context;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.io.File;
import java.net.URL;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
public class PropertiesContext extends PropertiesConfiguration {
private static final String PATH = "config/console.properties";
private static PropertiesContext propertiesContext;
public static void initialize() {
try {
propertiesContext = new PropertiesContext(PATH);
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
public static PropertiesContext getProperties() {
return propertiesContext;
}
public PropertiesContext(String path) throws ConfigurationException {
super(path);
}
public PropertiesContext(File file) throws ConfigurationException {
super(file);
}
public PropertiesContext(URL url) throws ConfigurationException {
super(url);
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.context;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.Font;
import com.nepxion.swing.font.FontContext;
import com.nepxion.swing.lookandfeel.LookAndFeelManager;
import com.nepxion.util.locale.LocaleContext;
public class UIContext {
private static final String FONT_NAME_YAHEI = "\u5fae\u8f6f\u96c5\u9ed1"; // 微软雅黑
private static final int FONT_SMALL_SIZE_YAHEI = 12; // 11
private static final int FONT_MIDDLE_SIZE_YAHEI = FONT_SMALL_SIZE_YAHEI + 1;
private static final int FONT_LARGE_SIZE_YAHEI = FONT_SMALL_SIZE_YAHEI + 2;
private static final String FONT_NAME_CALIBRI = "Calibri";
private static final int FONT_SMALL_SIZE_CALIBRI = 12;
private static final int FONT_MIDDLE_SIZE_CALIBRI = FONT_SMALL_SIZE_CALIBRI + 1;
private static final int FONT_LARGE_SIZE_CALIBRI = FONT_SMALL_SIZE_CALIBRI + 2;
public static void initialize() {
FontContext.registerFont(getFontName(), Font.PLAIN, getDefaultFontSize());
LookAndFeelManager.setNimbusLookAndFeel();
}
public static String getFontName() {
if (LocaleContext.getLocale() == LocaleContext.LOCALE_ZH_CN) {
return FONT_NAME_YAHEI;
}
return FONT_NAME_CALIBRI;
}
public static int getDefaultFontSize() {
String fontName = getFontName();
if (fontName.equals(FONT_NAME_YAHEI)) {
return FONT_MIDDLE_SIZE_YAHEI;
} else {
return FONT_MIDDLE_SIZE_CALIBRI;
}
}
public static int getSmallFontSize() {
String fontName = getFontName();
if (fontName.equals(FONT_NAME_YAHEI)) {
return FONT_SMALL_SIZE_YAHEI;
} else {
return FONT_SMALL_SIZE_CALIBRI;
}
}
public static int getMiddleFontSize() {
String fontName = getFontName();
if (fontName.equals(FONT_NAME_YAHEI)) {
return FONT_MIDDLE_SIZE_YAHEI;
} else {
return FONT_MIDDLE_SIZE_CALIBRI;
}
}
public static int getLargeFontSize() {
String fontName = getFontName();
if (fontName.equals(FONT_NAME_YAHEI)) {
return FONT_LARGE_SIZE_YAHEI;
} else {
return FONT_LARGE_SIZE_CALIBRI;
}
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.controller;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.util.List;
import java.util.Map;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.core.type.TypeReference;
import com.nepxion.discovery.console.desktop.context.PropertiesContext;
import com.nepxion.discovery.console.desktop.entity.InstanceEntity;
import com.nepxion.discovery.console.desktop.serializer.JacksonSerializer;
public class ServiceController {
public static RestTemplate restTemplate;
static {
restTemplate = new RestTemplate();
}
public static Map<String, List<InstanceEntity>> getInstanceMap() {
String url = getUrl() + "/console/instance-map";
String json = restTemplate.getForEntity(url, String.class).getBody();
return JacksonSerializer.fromJson(json, new TypeReference<Map<String, List<InstanceEntity>>>() {
});
}
public static String getUrl() {
String url = PropertiesContext.getProperties().getString("url");
if (!url.endsWith("/")) {
url += "/";
}
return url;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.entity;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.io.Serializable;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class InstanceEntity implements Serializable {
private static final long serialVersionUID = -3001191508072178378L;
private String serviceId;
private String version;
private String host;
private int port;
public String getServiceId() {
return serviceId;
}
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object object) {
return EqualsBuilder.reflectionEquals(this, object);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.icon;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import javax.swing.ImageIcon;
import com.nepxion.swing.icon.IconFactory;
public class ConsoleIconFactory extends IconFactory {
public static final String ICON_FOLDER = "com/nepxion/discovery/console/desktop/icon/";
public static ImageIcon getContextIcon(String iconName) {
return getIcon(ICON_FOLDER + iconName);
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.locale;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.util.Locale;
import com.nepxion.util.locale.LocaleManager;
public class ConsoleLocale {
public static final Class<?> BUNDLE_CLASS = ConsoleLocale.class;
public static String getString(String key) {
return LocaleManager.getString(BUNDLE_CLASS, key);
}
public static String getString(String key, Locale locale) {
return LocaleManager.getString(BUNDLE_CLASS, key, locale);
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.serializer;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.text.SimpleDateFormat;
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonSerializer {
private static ObjectMapper objectMapper;
static {
objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
}
public static <T> String toJson(T object) {
if (object == null) {
throw new IllegalArgumentException("Object is null");
}
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
public static <T> T fromJson(String json, Class<T> clazz) {
if (StringUtils.isEmpty(json)) {
throw new IllegalArgumentException("Json is null or empty");
}
try {
return objectMapper.readValue(json, clazz);
} catch (Exception e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
public static <T> T fromJson(String json, TypeReference<T> typeReference) {
if (StringUtils.isEmpty(json)) {
throw new IllegalArgumentException("Json is null or empty");
}
try {
return objectMapper.readValue(json, typeReference);
} catch (Exception e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
public static ObjectMapper getObjectMapper() {
return objectMapper;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.toggle;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
public class ConsoleToggleConstants {
public static final String SERVICE_TOPOLOGY = "service_topology";
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.toggle;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import com.nepxion.swing.element.IElementNode;
import com.nepxion.swing.list.toggle.AbstractToggleAdapter;
import com.nepxion.swing.list.toggle.JToggleList;
import com.nepxion.swing.toggle.ITogglePanel;
public class ConsoleToggleListener extends AbstractToggleAdapter {
public ConsoleToggleListener(JToggleList list) {
super(list);
}
public ITogglePanel getTogglePanel(IElementNode elementNode) {
Object userObject = elementNode.getUserObject();
if (userObject == null) {
userObject = new ConsoleTogglePanel(elementNode);
elementNode.setUserObject(userObject);
}
return (ITogglePanel) userObject;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.toggle;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.BorderLayout;
import java.awt.Component;
import com.nepxion.discovery.console.desktop.icon.ConsoleIconFactory;
import com.nepxion.discovery.console.desktop.locale.ConsoleLocale;
import com.nepxion.swing.element.IElementNode;
import com.nepxion.swing.locale.SwingLocale;
import com.nepxion.swing.toggle.JThreadTogglePanel;
public class ConsoleTogglePanel extends JThreadTogglePanel {
private static final long serialVersionUID = 1L;
private IElementNode listElementNode;
private ConsoleToggleSpace toggleSpace;
public ConsoleTogglePanel(IElementNode listElementNode) {
super(SwingLocale.getString("initialize_and_wait"));
this.listElementNode = listElementNode;
setToggleBannerIcon(ConsoleIconFactory.getSwingIcon("banner/edit.png"));
setInformationText(ConsoleLocale.getString("initialize_component"));
setInformationIcon(ConsoleIconFactory.getSwingIcon("banner/query_128.png"));
setErrorText(ConsoleLocale.getString("initialize_component_failure"));
setErrorIcon(ConsoleIconFactory.getSwingIcon("banner/error_128.png"));
setThreadPanelWidth(300);
showInformation();
setLayout(new BorderLayout());
}
public Component getContentPane() {
return toggleSpace;
}
public boolean isLoadCache() {
return toggleSpace != null;
}
protected void loadForeground(Object data) throws Exception {
if (toggleSpace == null) {
toggleSpace = new ConsoleToggleSpace(listElementNode);
add(toggleSpace, BorderLayout.CENTER);
}
}
protected Object loadBackground() throws Exception {
return null;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.toggle;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.BorderLayout;
import javax.swing.JComponent;
import javax.swing.JPanel;
import com.nepxion.discovery.console.desktop.workspace.ServiceTopology;
import com.nepxion.swing.element.IElementNode;
public class ConsoleToggleSpace extends JPanel {
private static final long serialVersionUID = 1L;
private IElementNode listElementNode;
private JPanel blankPane = new JPanel();
public ConsoleToggleSpace(IElementNode listElementNode) {
this.listElementNode = listElementNode;
setLayout(new BorderLayout());
add(createContentPane(), BorderLayout.CENTER);
}
private JComponent createContentPane() {
JComponent contentPane = null;
String name = listElementNode.getName();
if (name.equals(ConsoleToggleConstants.SERVICE_TOPOLOGY)) {
contentPane = new ServiceTopology();
} else {
contentPane = blankPane;
}
return contentPane;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.workspace.common;
/**
* <p>Title: Nepxion Thunder</p>
* <p>Description: Nepxion Thunder For Distribution</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import com.nepxion.discovery.console.desktop.context.UIContext;
import com.nepxion.swing.separator.JBasicSeparator;
public class UIUtil {
public static JBasicSeparator createSeparator() {
JBasicSeparator separator = new JBasicSeparator(JBasicSeparator.HORIZONTAL, JBasicSeparator.LOWERED_STYLE, -1);
separator.setBrightColor(new Color(197, 196, 198));
separator.setDarkColor(new Color(153, 152, 154));
return separator;
}
public static Border createTitledBorder(String title) {
return BorderFactory.createTitledBorder(null, title, TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, new Font(UIContext.getFontName(), Font.PLAIN, UIContext.getLargeFontSize()), new Color(64, 0, 0));
}
}
package com.nepxion.discovery.console.desktop.workspace.topology;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.awt.Point;
public class TopologyEntity {
public static final String REGISTRY_LARGE_IMAGE = "registry_48.png";
public static final String MQ_LARGE_IMAGE = "mq_48.png";
public static final String CACHE_LARGE_IMAGE = "cache_48.png";
public static final String LOGGER_LARGE_IMAGE = "logger_48.png";
public static final String SERVICE_LARGE_IMAGE = "service_48.png";
public static final String REFERENCE_LARGE_IMAGE = "reference_48.png";
public static final String REGISTRY_SMALL_IMAGE = "registry_32.png";
public static final String MQ_SMALL_IMAGE = "mq_32.png";
public static final String CACHE_SMALL_IMAGE = "cache_32.png";
public static final String LOGGER_SMALL_IMAGE = "logger_32.png";
public static final String SERVICE_SMALL_IMAGE = "service_32.png";
public static final String REFERENCE_SMALL_IMAGE = "reference_32.png";
private TopologyEntityType type;
private String image;
private Point location;
private boolean horizontalPile;
public TopologyEntity(TopologyEntityType type, boolean largeStyle, Point location) {
initialize(type, largeStyle);
this.location = location;
}
public TopologyEntity(TopologyEntityType type, boolean largeStyle, boolean horizontalPile) {
initialize(type, largeStyle);
this.horizontalPile = horizontalPile;
}
private void initialize(TopologyEntityType type, boolean largeStyle) {
this.type = type;
switch (type) {
case REGISTRY:
image = largeStyle ? REGISTRY_LARGE_IMAGE : REGISTRY_SMALL_IMAGE;
break;
case MQ:
image = largeStyle ? MQ_LARGE_IMAGE : MQ_SMALL_IMAGE;
break;
case CACHE:
image = largeStyle ? CACHE_LARGE_IMAGE : CACHE_SMALL_IMAGE;
break;
case LOGGER:
image = largeStyle ? LOGGER_LARGE_IMAGE : LOGGER_SMALL_IMAGE;
break;
case SERVICE:
image = largeStyle ? SERVICE_LARGE_IMAGE : SERVICE_SMALL_IMAGE;
break;
case REFERENCE:
image = largeStyle ? REFERENCE_LARGE_IMAGE : REFERENCE_SMALL_IMAGE;
break;
}
}
public TopologyEntityType getType() {
return type;
}
public String getImage() {
return image;
}
public Point getLocation() {
return location;
}
public boolean isHorizontalPile() {
return horizontalPile;
}
}
\ No newline at end of file
package com.nepxion.discovery.console.desktop.workspace.topology;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
public enum TopologyEntityType {
REGISTRY,
MQ,
CACHE,
LOGGER,
SERVICE,
REFERENCE
}
\ No newline at end of file
@echo on
@echo =============================================================
@echo $ $
@echo $ Encoding localizer $
@echo $ $
@echo $ $
@echo $ $
@echo $ Nepxion Technologies All Right Reserved $
@echo $ Copyright(C) 2015 $
@echo $ $
@echo =============================================================
@echo.
@echo off
@rem ======================================
@rem DOS Batch file to invoke the Swing UI
@rem ======================================
@title Encoding localizer
@color 0a
rem if "%JAVA_HOME%"=="" goto noJava
if "%JAVA_HOME%"=="" set JAVA_HOME=D:\JDK1.6.0
%JAVA_HOME%\bin\native2ascii -encoding gbk Locale.properties Locale_zh_CN.properties
\ No newline at end of file
title=Discovery服务治理控制台
navigator_bar=导航区
content_bar=工作区
service_control=服务治理
service_topology=服务拓扑
show_topology=显示拓扑图
group_layout=组布局
node_layout=节点布局
start_x=起始点X坐标
start_y=起始点Y坐标
horizontal_gap=水平间距
vertical_gap=垂直间距
initialize_component=初始化界面
initialize_component_failure=初始化界面失败
\ No newline at end of file
title=Discovery\u670d\u52a1\u6cbb\u7406\u63a7\u5236\u53f0
navigator_bar=\u5bfc\u822a\u533a
content_bar=\u5de5\u4f5c\u533a
service_control=\u670d\u52a1\u6cbb\u7406
service_topology=\u670d\u52a1\u62d3\u6251
show_topology=\u663e\u793a\u62d3\u6251\u56fe
group_layout=\u7ec4\u5e03\u5c40
node_layout=\u8282\u70b9\u5e03\u5c40
start_x=\u8d77\u59cb\u70b9X\u5750\u6807
start_y=\u8d77\u59cb\u70b9Y\u5750\u6807
horizontal_gap=\u6c34\u5e73\u95f4\u8ddd
vertical_gap=\u5782\u76f4\u95f4\u8ddd
initialize_component=\u521d\u59cb\u5316\u754c\u9762
initialize_component_failure=\u521d\u59cb\u5316\u754c\u9762\u5931\u8d25
url=http://localhost:2222/
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="30">
<Appenders>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%class:%line] - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<AsyncLogger name="com.nepxion.discovery.console.desktop" level="info" additivity="false" includeLocation="true">
<AppenderRef ref="stdout"/>
</AsyncLogger>
<AsyncRoot level="info" includeLocation="true">
<AppenderRef ref="stdout"/>
</AsyncRoot>
</Loggers>
</Configuration>
\ No newline at end of file
......@@ -18,6 +18,7 @@
<module>discovery-plugin-config-center</module>
<module>discovery-plugin-admin-center</module>
<module>discovery-console</module>
<module>discovery-console-desktop</module>
<module>discovery-plugin-starter-eureka</module>
<module>discovery-plugin-starter-consul</module>
<module>discovery-plugin-starter-zookeeper</module>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment