changes in extensions

This commit is contained in:
sirjonasxx 2018-09-27 15:05:38 +02:00
parent bb608102a7
commit 072bf1d273
6 changed files with 53 additions and 31 deletions

View File

@ -23,7 +23,11 @@ public abstract class Extension {
void act(String[] args); void act(String[] args);
} }
protected static final boolean CANLEAVE = true; // can you disconnect the ext
protected static final boolean CANDELETE = true; // can you delete the ext (will be false for some built-in extensions)
private String[] args;
private boolean isCorrupted = false;
private static final String[] PORT_FLAG = {"--port", "-p"}; private static final String[] PORT_FLAG = {"--port", "-p"};
private static final String[] FILE_FLAG = {"--filename", "-f"}; private static final String[] FILE_FLAG = {"--filename", "-f"};
@ -49,6 +53,8 @@ public abstract class Extension {
*/ */
public Extension(String[] args) { public Extension(String[] args) {
//obtain port //obtain port
this.args = args;
if (getInfoAnnotations() == null) { if (getInfoAnnotations() == null) {
System.err.println("Extension info not found\n\n" + System.err.println("Extension info not found\n\n" +
@ -59,6 +65,17 @@ public abstract class Extension {
" Version = \"...\",\n" + " Version = \"...\",\n" +
" Author = \"...\"" + " Author = \"...\"" +
"\n)"); "\n)");
isCorrupted = true;
}
if (getArgument(args, PORT_FLAG) == null) {
System.err.println("Don't forget to include G-Earth's port as program parameters (-p {port})");
isCorrupted = true;
}
}
public void run() {
if (isCorrupted) {
return; return;
} }
@ -67,7 +84,7 @@ public abstract class Extension {
Socket gEarthExtensionServer = null; Socket gEarthExtensionServer = null;
try { try {
gEarthExtensionServer = new Socket("127.0.0.2", port); gEarthExtensionServer = new Socket("127.0.0.1", port);
InputStream in = gEarthExtensionServer.getInputStream(); InputStream in = gEarthExtensionServer.getInputStream();
DataInputStream dIn = new DataInputStream(in); DataInputStream dIn = new DataInputStream(in);
out = gEarthExtensionServer.getOutputStream(); out = gEarthExtensionServer.getOutputStream();
@ -105,7 +122,9 @@ public abstract class Extension {
.appendString(info.Description()) .appendString(info.Description())
.appendBoolean(isOnClickMethodUsed()) .appendBoolean(isOnClickMethodUsed())
.appendBoolean(file == null) .appendBoolean(file == null)
.appendString(file == null ? "": file); .appendString(file == null ? "": file)
.appendBoolean(CANLEAVE)
.appendBoolean(CANDELETE);
writeToStream(response.toBytes()); writeToStream(response.toBytes());
} }
else if (packet.headerId() == Extensions.OUTGOING_MESSAGES_IDS.CONNECTIONSTART) { else if (packet.headerId() == Extensions.OUTGOING_MESSAGES_IDS.CONNECTIONSTART) {

View File

@ -55,6 +55,7 @@ public abstract class ExtensionForm extends Application {
return extInfo; return extInfo;
} }
}; };
extension.run();
// Platform.runLater(primaryStage::close); // Platform.runLater(primaryStage::close);
//when the extension has ended, close this process //when the extension has ended, close this process
Platform.exit(); Platform.exit();

View File

@ -20,7 +20,7 @@ import main.protocol.HPacket;
public class AdminOnConnect extends Extension { public class AdminOnConnect extends Extension {
public static void main(String[] args) { public static void main(String[] args) {
new AdminOnConnect(args); new AdminOnConnect(args).run();
} }
public AdminOnConnect(String[] args) { public AdminOnConnect(String[] args) {
super(args); super(args);

View File

@ -25,7 +25,7 @@ import java.util.Random;
public class SpeechColorizer extends Extension { public class SpeechColorizer extends Extension {
public static void main(String[] args) { public static void main(String[] args) {
new SpeechColorizer(args); new SpeechColorizer(args).run();
} }
private SpeechColorizer(String[] args) { private SpeechColorizer(String[] args) {
super(args); super(args);

View File

@ -70,16 +70,14 @@ public class ExtensionItemContainer extends GridPane {
exitButton.show(); exitButton.show();
exitButton.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> item.isRemoveClickTrigger()); exitButton.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> item.isRemoveClickTrigger());
SimpleClickButton clickButton = new SimpleClickButton(); SimpleClickButton clickButton = new SimpleClickButton();
clickButton.show();
clickButton.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> item.isClickTrigger()); clickButton.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> item.isClickTrigger());
HBox buttonsBox = new HBox(clickButton, exitButton); HBox buttonsBox = new HBox(clickButton, exitButton);
if (item.isFireButtonUsed()) {
clickButton.show(); clickButton.setVisible(item.isFireButtonUsed());
} exitButton.setVisible(item.isLeaveButtonVisible());
else { buttonsBox.setSpacing(8);
HBox.setMargin(exitButton, new Insets(0,0,0,24));
}
buttonsBox.setSpacing(item.isFireButtonUsed() ? 8 : 0);
buttonsBox.setAlignment(Pos.CENTER); buttonsBox.setAlignment(Pos.CENTER);
GridPane.setMargin(buttonsBox, new Insets(0, 5, 0, 5)); GridPane.setMargin(buttonsBox, new Insets(0, 5, 0, 5));
add(buttonsBox, 4, 0); add(buttonsBox, 4, 0);

View File

@ -19,7 +19,10 @@ public class GEarthExtension {
private String author; private String author;
private String version; private String version;
private String description; private String description;
private boolean fireEventButtonVisible; private boolean fireEventButtonVisible;
private boolean leaveButtonVisible;
private boolean deleteButtonVisible;
private boolean isInstalledExtension; // <- extension is in the extensions directory private boolean isInstalledExtension; // <- extension is in the extensions directory
private String fileName; private String fileName;
@ -53,13 +56,7 @@ public class GEarthExtension {
if (packet.headerId() == Extensions.INCOMING_MESSAGES_IDS.EXTENSIONINFO) { if (packet.headerId() == Extensions.INCOMING_MESSAGES_IDS.EXTENSIONINFO) {
GEarthExtension gEarthExtension = new GEarthExtension( GEarthExtension gEarthExtension = new GEarthExtension(
packet.readString(), packet,
packet.readString(),
packet.readString(),
packet.readString(),
packet.readBoolean(),
packet.readBoolean(),
packet.readString(),
connection, connection,
onDisconnectedCallback onDisconnectedCallback
); );
@ -73,15 +70,21 @@ public class GEarthExtension {
} }
private GEarthExtension(String title, String author, String version, String description, boolean fireEventButtonVisible, boolean isInstalledExtension, String fileName, Socket connection, OnDisconnectedCallback onDisconnectedCallback) { private GEarthExtension(HPacket extensionInfo, Socket connection, OnDisconnectedCallback onDisconnectedCallback) {
this.title = title;
this.author = author;
this.version = version;
this.description = description;
this.fireEventButtonVisible = fireEventButtonVisible;
this.isInstalledExtension = isInstalledExtension;
this.fileName = fileName;
this.title = extensionInfo.readString();
this.author = extensionInfo.readString();
this.version = extensionInfo.readString();
this.description = extensionInfo.readString();
this.fireEventButtonVisible = extensionInfo.readBoolean();
this.isInstalledExtension = extensionInfo.readBoolean();
this.fileName = extensionInfo.readString();
this.leaveButtonVisible = extensionInfo.readBoolean();
this.deleteButtonVisible = extensionInfo.readBoolean();
this.connection = connection; this.connection = connection;
@ -134,26 +137,27 @@ public class GEarthExtension {
public String getAuthor() { public String getAuthor() {
return author; return author;
} }
public String getDescription() { public String getDescription() {
return description; return description;
} }
public String getTitle() { public String getTitle() {
return title; return title;
} }
public String getVersion() { public String getVersion() {
return version; return version;
} }
public boolean isFireButtonUsed() { public boolean isFireButtonUsed() {
return fireEventButtonVisible; return fireEventButtonVisible;
} }
public String getFileName() { public String getFileName() {
return fileName; return fileName;
} }
public boolean isDeleteButtonVisible() {
return deleteButtonVisible;
}
public boolean isLeaveButtonVisible() {
return leaveButtonVisible;
}
public boolean isInstalledExtension() { public boolean isInstalledExtension() {
return isInstalledExtension; return isInstalledExtension;