getMenus() {
- return List.of(chatMulticastMenu);
- }
-}
-```
-
-### GUI
-
-Essa é a janela principal do plugin de chat.
-
-```
-public class ChatWindow extends JDialog {
-
- private JButton jButton1;
- private JEditorPane jEditorPane1;
- private JPanel jPanel1;
- private JPanel jPanel2;
- private JScrollPane jScrollPane1;
- private JScrollPane jScrollPane2;
- private JSplitPane jSplitPane1;
- private JTextArea jTextArea1;
-
- private final Pitiupi pitiupi;
-
- public ChatWindow(Pitiupi pitiupi) {
- this.pitiupi = pitiupi;
- initComponents();
- }
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- private void initComponents() {
-
- this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
- this.setTitle("Chat Window");
- this.setBounds(new java.awt.Rectangle(0, 0, 800, 600));
- this.getContentPane().setLayout(new java.awt.BorderLayout(5, 5));
- this.setPreferredSize(new java.awt.Dimension(800, 600));
-
- jSplitPane1 = new JSplitPane();
- jScrollPane1 = new JScrollPane();
- jEditorPane1 = new JEditorPane();
- jPanel1 = new JPanel();
- jScrollPane2 = new JScrollPane();
- jTextArea1 = new JTextArea();
- jPanel2 = new JPanel();
- jButton1 = new JButton();
-
- jSplitPane1.setDividerLocation(500);
- jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
- jEditorPane1.setContentType("text/html");
- jPanel1.setLayout(new java.awt.BorderLayout());
- jTextArea1.setColumns(20);
- jTextArea1.setRows(5);
- jTextArea1.addKeyListener(new java.awt.event.KeyAdapter() {
- @Override
- public void keyTyped(java.awt.event.KeyEvent evt) {
- if (evt.getKeyChar() == '\n') {
- sendMessage();
- }
- }
- });
- jButton1.setText("Send");
-
- jScrollPane1.setViewportView(jEditorPane1);
- jScrollPane2.setViewportView(jTextArea1);
- jSplitPane1.setTopComponent(jScrollPane1);
-
- jPanel1.add(jScrollPane2, java.awt.BorderLayout.CENTER);
- jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
- jButton1.addActionListener((java.awt.event.ActionEvent evt) -> {
- sendMessage();
- });
- jPanel2.add(jButton1);
- jPanel1.add(jPanel2, java.awt.BorderLayout.PAGE_END);
- jSplitPane1.setRightComponent(jPanel1);
- getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
- pack();
- }
-
- private void sendMessage() {
- if (jTextArea1.getText().trim().isEmpty()) {
- return;
- }
- ChatMessage message = new ChatMessage(pitiupi.getUserName(), jTextArea1.getText());
- this.sendChatMessage(message);
- jTextArea1.setText("");
- }
-
- public void sendChatMessage(Message message) {
- pitiupi.sendUdpMulticast(message);
- }
-
- public void receiveChatMessage(ChatMessage message) {
- SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyyy hh:mm:ss");
- Date date = new Date();
- this.receiveChatMessage(dt.format(date) + " "
- + "" + message.getName() + ": "
- + message.getText() + "
");
- }
-
- public void receiveChatMessage(String message) {
- jEditorPane1.setText(message + jEditorPane1.getText());
- }
-}
-```
\ No newline at end of file
diff --git a/pitiupi/src/pitiupi/control/GuiManager.java b/pitiupi/src/pitiupi/control/GuiManager.java
index 02c3c29..b2a6f63 100644
--- a/pitiupi/src/pitiupi/control/GuiManager.java
+++ b/pitiupi/src/pitiupi/control/GuiManager.java
@@ -30,6 +30,18 @@ public class GuiManager {
}
public void createMenu(MenuCategory category, Menu menu) {
+ System.out.println(
+ menu.getClass().getSuperclass().getSuperclass()
+ );
+
+ System.out.println(
+ MulticastMenu.class
+ );
+
+ System.out.println(
+ menu.getClass().getSuperclass().getSuperclass()
+ == MulticastMenu.class
+ );
try {
JMenuItem newMenu = buildMenu(menu);
if (menu instanceof MulticastMenu) {
@@ -43,6 +55,7 @@ public class GuiManager {
logger.log(Level.WARNING, e.getMessage());
}
}
+
private JMenuItem buildMenu(Menu menu) {
if (menu instanceof MulticastSubMenu multicastSubMenu) {
JMenu newMenu = new JMenu(menu.getText());
diff --git a/pitiupi/src/pitiupi/control/plugins/PluginManager.java b/pitiupi/src/pitiupi/control/plugins/PluginManager.java
index 60f29f4..ada270d 100644
--- a/pitiupi/src/pitiupi/control/plugins/PluginManager.java
+++ b/pitiupi/src/pitiupi/control/plugins/PluginManager.java
@@ -1,6 +1,5 @@
package pitiupi.control.plugins;
-import pitiupi.plugin.Pitiupi;
import pitiupi.Main;
import pitiupi.control.ConnectionManager;
import pitiupi.control.GuiManager;
@@ -93,7 +92,6 @@ public class PluginManager {
public void loadPlugins(ConnectionManager connectionManager, GuiManager guiManager) {
File pluginDir = new File("plugins");
File[] jarFiles = pluginDir.listFiles((dir, name) -> name.endsWith(".jar"));
- Pitiupi pitiupi = new Pitiupi(connectionManager, guiManager);
if (jarFiles == null || jarFiles.length == 0) {
System.out.println("No plugins found in the " + pluginDir.getAbsolutePath() + " directory.");
@@ -120,7 +118,7 @@ public class PluginManager {
System.out.println("Loading: " + plugin.getName());
LoadedPlugin loadedPlugin = new LoadedPlugin(plugin, classLoader);
- plugin.createPlugin(pitiupi);
+ plugin.createPlugin(connectionManager, guiManager);
loadedPlugins.add(loadedPlugin);
loadedJars.add(file.getName());
}
diff --git a/pitiupi/src/pitiupi/models/Plugin.java b/pitiupi/src/pitiupi/models/Plugin.java
index f28e62b..ffd898c 100644
--- a/pitiupi/src/pitiupi/models/Plugin.java
+++ b/pitiupi/src/pitiupi/models/Plugin.java
@@ -3,7 +3,9 @@
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
*/
package pitiupi.models;
-import pitiupi.plugin.Pitiupi;
+
+import pitiupi.control.ConnectionManager;
+import pitiupi.control.GuiManager;
import pitiupi.models.Messages.Message;
import pitiupi.net.tcp.TcpConnection;
@@ -28,9 +30,10 @@ public abstract class Plugin {
*
* Este método é chamado pela aplicação após o carregamento do plugin.
*
- * @param pitiupi interface com o sistema de conexões da aplicação.
+ * @param connectionManager interface com o sistema de conexões da aplicação.
+ * @param guiManager interface com a janela principal da aplicação
*/
- public abstract void createPlugin(Pitiupi pitiupi);
+ public abstract void createPlugin(ConnectionManager connectionManager, GuiManager guiManager);
/**
* Retorna uma mensagem utilizada pelo plugin.
@@ -59,4 +62,4 @@ public abstract class Plugin {
public boolean onSocketClosed(TcpConnection connection) {
return false;
}
-}
+}
\ No newline at end of file
diff --git a/pitiupi/src/pitiupi/plugin/Pitiupi.java b/pitiupi/src/pitiupi/plugin/Pitiupi.java
deleted file mode 100644
index 071de18..0000000
--- a/pitiupi/src/pitiupi/plugin/Pitiupi.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package pitiupi.plugin;
-
-import pitiupi.control.ConnectionManager;
-import pitiupi.control.GuiManager;
-import pitiupi.models.Menus.Menu;
-import pitiupi.models.Menus.MenuCategory;
-import pitiupi.models.Messages.Message;
-import pitiupi.net.tcp.TcpConnection;
-
-import java.net.InetAddress;
-
-public class Pitiupi {
-
- private final ConnectionManager connectionManager;
- private final GuiManager guiManager;
-
- public Pitiupi(ConnectionManager connectionManager, GuiManager guiManager) {
- this.connectionManager = connectionManager;
- this.guiManager = guiManager;
- }
-
- public boolean sendUdpMulticast(Message message) {
- return connectionManager.sendUdpMulticast(message);
- }
-
- public boolean sendUdpUnicast(Message message, InetAddress address) {
- return connectionManager.sendUdpUnicast(message, address);
- }
-
- public boolean sendTcp(Message message, InetAddress address) {
- return connectionManager.sendTcp(message, address);
- }
-
- public TcpConnection connectTcp(InetAddress address, String senderId, String receiverId) {
- return connectionManager.connectPluginTcp(address, senderId, receiverId);
- }
-
- public String getUserName() {
- return connectionManager.getUserName();
- }
-
- public int getPort() {
- return connectionManager.getPort();
- }
-
- public void createMenu(MenuCategory category, Menu menu) {
- guiManager.createMenu(category, menu);
- }
-}