From 59a8c0e979869f9f2ffefab174fdb7074d35d3ed Mon Sep 17 00:00:00 2001 From: salgado2004 Date: Wed, 5 Jun 2024 22:32:45 -0300 Subject: [PATCH 1/5] fix: bug de investimento com saldo negativo --- src/main/br/ufpr/views/ManipularConta.form | 17 ++++++++++-- src/main/br/ufpr/views/ManipularConta.java | 32 ++++++++++++++++++++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/br/ufpr/views/ManipularConta.form b/src/main/br/ufpr/views/ManipularConta.form index 8e8601e..fe8a156 100644 --- a/src/main/br/ufpr/views/ManipularConta.form +++ b/src/main/br/ufpr/views/ManipularConta.form @@ -40,7 +40,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -252,9 +252,20 @@ - + + + + + + + + + + + + diff --git a/src/main/br/ufpr/views/ManipularConta.java b/src/main/br/ufpr/views/ManipularConta.java index c149d67..0b40ca4 100644 --- a/src/main/br/ufpr/views/ManipularConta.java +++ b/src/main/br/ufpr/views/ManipularConta.java @@ -11,6 +11,11 @@ import javax.swing.*; import java.awt.event.*; +/** + * Classe que representa a tela de manipulação de conta + * Realiza transações como saque, depósito e investimento + * @see Tela + */ public class ManipularConta implements Tela { private Conta conta; private JPanel frame; @@ -33,7 +38,13 @@ public class ManipularConta implements Tela { private JLabel tipoConta; private JLabel rendimento; private JLabel numeroConta; + private JLabel warningLimite; + /** + * Construtor da classe ManipularConta + * Adiciona os ícones aos botões e painéis + * Adiciona os listeners aos botões + */ public ManipularConta() { buscarButton.setIcon(Imagens.SEARCH.icon()); mostrarSaldo.setIcon(Imagens.EYE_OPEN.icon()); @@ -104,13 +115,22 @@ public void actionPerformed(ActionEvent e) { investirButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - conta.remunera(); - Mensagens.sucesso(dadosConta, "Investimento realizado com sucesso"); - loadConta(); + if(conta.getSaldo() > 0){ + conta.remunera(); + Mensagens.sucesso(dadosConta, "Investimento realizado com sucesso"); + loadConta(); + } else { + Mensagens.aviso(dadosConta, "Saldo insuficiente para investir"); + } } }); } + /** + * Construtor da classe ManipularConta + * Serve para instanciar a classe e carregar os dados da conta de um cliente + * @param cliente Cliente que será manipulado + */ public ManipularConta(Cliente cliente){ this(); conta = cliente.getConta(); @@ -139,6 +159,7 @@ private void loadConta(){ Mensagens.carregando(dadosConta, "Carregando dados da conta..."); saldo.setText("R$ " + String.format("%.2f", conta.getSaldo()).replace(".", ",") ); numeroConta.setText("Conta Nº: "+ String.format("%6d", conta.getNumero())); + warningLimite.setVisible(conta.getSaldo() < 0); if(conta.getClass() == ContaCorrente.class){ tipoConta.setText("Sua conta é do tipo: Conta Corrente"); rendimento.setText("Seu rendimento é de: 101%"); @@ -148,6 +169,11 @@ private void loadConta(){ } } + /** + * Retorna o painel principal da tela + * @return JPanel + * @see Tela + */ public JPanel getFrame() { return frame; } From 96d2e2466ea8646c2b0a1cef6edddc988721eb51 Mon Sep 17 00:00:00 2001 From: Pedro Souza Date: Thu, 6 Jun 2024 22:30:26 -0300 Subject: [PATCH 2/5] feat correcao-de-bug-excluir-cliete-pelo-cpf --- src/main/br/ufpr/views/ManterCliente.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/br/ufpr/views/ManterCliente.java b/src/main/br/ufpr/views/ManterCliente.java index 0247515..c81e5ef 100644 --- a/src/main/br/ufpr/views/ManterCliente.java +++ b/src/main/br/ufpr/views/ManterCliente.java @@ -199,7 +199,9 @@ public void actionPerformed(ActionEvent e) { @Override public void actionPerformed(ActionEvent e) { String cpf = textFieldCPF.getText(); - Sistema.getClientes().removeIf(cliente -> cliente.getCpf().equalsIgnoreCase(cpf)); + cpf = cpf.replaceAll("[^0-9]", ""); + String finalCpf = cpf; + Sistema.getClientes().removeIf(cliente -> cliente.getCpf().equalsIgnoreCase(finalCpf)); Mensagens.sucesso(null, "CPF "+cpf+" removido\n"); From d69222e28514a9006c8ed454a8a9de965f4aa323 Mon Sep 17 00:00:00 2001 From: salgado2004 Date: Thu, 6 Jun 2024 22:33:06 -0300 Subject: [PATCH 3/5] =?UTF-8?q?new:=20=C3=ADcone=20de=20adicionar=20client?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/add.png | Bin 0 -> 317 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/add.png diff --git a/assets/add.png b/assets/add.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf7e5054fbb5f5c17b4346a410fd3b684f6b0f0 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AqVljv*f2Z>Q|$J!Bxz#%sNSp@Vb9jizau z2_`K@j9wF)+88G+XlvqZ_&>eo#0+D*6eW#Mp7ZrSK0a3_x9;(J$wORmd$KLs;u|~9 zeGofoCZ^Z6x_5H-ovCeKW Date: Thu, 6 Jun 2024 22:41:20 -0300 Subject: [PATCH 4/5] feat bug-excluir-cpf --- src/main/br/ufpr/views/ManterCliente.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/br/ufpr/views/ManterCliente.java b/src/main/br/ufpr/views/ManterCliente.java index c81e5ef..cc74ebc 100644 --- a/src/main/br/ufpr/views/ManterCliente.java +++ b/src/main/br/ufpr/views/ManterCliente.java @@ -199,8 +199,11 @@ public void actionPerformed(ActionEvent e) { @Override public void actionPerformed(ActionEvent e) { String cpf = textFieldCPF.getText(); + cpf = cpf.replaceAll("[^0-9]", ""); + String finalCpf = cpf; + Sistema.getClientes().removeIf(cliente -> cliente.getCpf().equalsIgnoreCase(finalCpf)); Mensagens.sucesso(null, "CPF "+cpf+" removido\n"); From b450a939a59aa3b722d61d798471a9b39d3559ff Mon Sep 17 00:00:00 2001 From: raulbana Date: Tue, 11 Jun 2024 22:02:03 -0300 Subject: [PATCH 5/5] feat: docs --- doc/allclasses-index.html | 133 ++ doc/allpackages-index.html | 68 + doc/copy.svg | 33 + doc/element-list | 3 + doc/help-doc.html | 188 +++ doc/index-all.html | 504 +++++++ doc/index.html | 67 + doc/legal/COPYRIGHT | 1 + doc/legal/LICENSE | 1 + doc/legal/jquery.md | 72 + doc/legal/jqueryUI.md | 49 + doc/link.svg | 31 + doc/main/br/ufpr/controllers/Imagens.html | 360 +++++ doc/main/br/ufpr/controllers/Mensagens.html | 270 ++++ doc/main/br/ufpr/controllers/Sistema.html | 313 ++++ .../br/ufpr/controllers/package-summary.html | 105 ++ .../br/ufpr/controllers/package-tree.html | 86 ++ doc/main/br/ufpr/models/Cliente.html | 167 +++ doc/main/br/ufpr/models/Conta.html | 318 +++++ doc/main/br/ufpr/models/ContaCorrente.html | 268 ++++ doc/main/br/ufpr/models/ContaI.html | 232 +++ .../br/ufpr/models/ContaInvestimento.html | 342 +++++ doc/main/br/ufpr/models/Endereco.html | 220 +++ doc/main/br/ufpr/models/Tela.html | 151 ++ doc/main/br/ufpr/models/package-summary.html | 119 ++ doc/main/br/ufpr/models/package-tree.html | 85 ++ doc/main/br/ufpr/views/Home.html | 192 +++ doc/main/br/ufpr/views/ManipularConta.html | 226 +++ doc/main/br/ufpr/views/ManterCliente.html | 249 ++++ .../ufpr/views/ManterClienteTableModel.html | 296 ++++ doc/main/br/ufpr/views/VincularCliente.html | 192 +++ .../br/ufpr/views/VincularTableModel.html | 296 ++++ doc/main/br/ufpr/views/package-summary.html | 114 ++ doc/main/br/ufpr/views/package-tree.html | 80 ++ doc/member-search-index.js | 1 + doc/module-search-index.js | 1 + doc/overview-summary.html | 26 + doc/overview-tree.html | 113 ++ doc/package-search-index.js | 1 + doc/resources/glass.png | Bin 0 -> 499 bytes doc/resources/x.png | Bin 0 -> 394 bytes doc/script-dir/jquery-3.6.1.min.js | 2 + doc/script-dir/jquery-ui.min.css | 6 + doc/script-dir/jquery-ui.min.js | 6 + doc/script.js | 253 ++++ doc/search-page.js | 284 ++++ doc/search.html | 72 + doc/search.js | 458 ++++++ doc/serialized-form.html | 112 ++ doc/stylesheet.css | 1272 +++++++++++++++++ doc/tag-search-index.js | 1 + doc/type-search-index.js | 1 + src/main/br/ufpr/models/Cliente.java | 111 +- src/main/br/ufpr/models/Conta.java | 54 +- src/main/br/ufpr/models/ContaCorrente.java | 45 +- src/main/br/ufpr/models/ContaI.java | 54 +- .../br/ufpr/models/ContaInvestimento.java | 74 +- src/main/br/ufpr/models/Endereco.java | 40 +- src/main/br/ufpr/models/Tela.java | 11 +- src/main/br/ufpr/views/Home.java | 33 +- src/main/br/ufpr/views/ManterCliente.java | 45 +- .../ufpr/views/ManterClienteTableModel.java | 41 +- src/main/br/ufpr/views/VincularCliente.java | 24 +- .../br/ufpr/views/VincularTableModel.java | 44 +- 64 files changed, 8857 insertions(+), 159 deletions(-) create mode 100644 doc/allclasses-index.html create mode 100644 doc/allpackages-index.html create mode 100644 doc/copy.svg create mode 100644 doc/element-list create mode 100644 doc/help-doc.html create mode 100644 doc/index-all.html create mode 100644 doc/index.html create mode 100644 doc/legal/COPYRIGHT create mode 100644 doc/legal/LICENSE create mode 100644 doc/legal/jquery.md create mode 100644 doc/legal/jqueryUI.md create mode 100644 doc/link.svg create mode 100644 doc/main/br/ufpr/controllers/Imagens.html create mode 100644 doc/main/br/ufpr/controllers/Mensagens.html create mode 100644 doc/main/br/ufpr/controllers/Sistema.html create mode 100644 doc/main/br/ufpr/controllers/package-summary.html create mode 100644 doc/main/br/ufpr/controllers/package-tree.html create mode 100644 doc/main/br/ufpr/models/Cliente.html create mode 100644 doc/main/br/ufpr/models/Conta.html create mode 100644 doc/main/br/ufpr/models/ContaCorrente.html create mode 100644 doc/main/br/ufpr/models/ContaI.html create mode 100644 doc/main/br/ufpr/models/ContaInvestimento.html create mode 100644 doc/main/br/ufpr/models/Endereco.html create mode 100644 doc/main/br/ufpr/models/Tela.html create mode 100644 doc/main/br/ufpr/models/package-summary.html create mode 100644 doc/main/br/ufpr/models/package-tree.html create mode 100644 doc/main/br/ufpr/views/Home.html create mode 100644 doc/main/br/ufpr/views/ManipularConta.html create mode 100644 doc/main/br/ufpr/views/ManterCliente.html create mode 100644 doc/main/br/ufpr/views/ManterClienteTableModel.html create mode 100644 doc/main/br/ufpr/views/VincularCliente.html create mode 100644 doc/main/br/ufpr/views/VincularTableModel.html create mode 100644 doc/main/br/ufpr/views/package-summary.html create mode 100644 doc/main/br/ufpr/views/package-tree.html create mode 100644 doc/member-search-index.js create mode 100644 doc/module-search-index.js create mode 100644 doc/overview-summary.html create mode 100644 doc/overview-tree.html create mode 100644 doc/package-search-index.js create mode 100644 doc/resources/glass.png create mode 100644 doc/resources/x.png create mode 100644 doc/script-dir/jquery-3.6.1.min.js create mode 100644 doc/script-dir/jquery-ui.min.css create mode 100644 doc/script-dir/jquery-ui.min.js create mode 100644 doc/script.js create mode 100644 doc/search-page.js create mode 100644 doc/search.html create mode 100644 doc/search.js create mode 100644 doc/serialized-form.html create mode 100644 doc/stylesheet.css create mode 100644 doc/tag-search-index.js create mode 100644 doc/type-search-index.js diff --git a/doc/allclasses-index.html b/doc/allclasses-index.html new file mode 100644 index 0000000..0bcef2b --- /dev/null +++ b/doc/allclasses-index.html @@ -0,0 +1,133 @@ + + + + +All Classes and Interfaces + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
Esta classe representa um cliente no sistema.
+
+ +
+
Esta é uma classe abstrata que representa uma conta no sistema.
+
+ +
+
Esta classe representa uma Conta Corrente no sistema.
+
+ +
+
Esta é uma interface que define os métodos que uma conta deve implementar.
+
+ +
+
Esta classe representa uma Conta de Investimento no sistema.
+
+ +
+
Esta classe representa um Endereço no sistema.
+
+ +
+
Esta classe representa a tela inicial do sistema.
+
+ +
+
Enum que contém os caminhos das imagens utilizadas no projeto
+
+ +
+
Classe que representa a tela de manipulação de conta + Realiza transações como saque, depósito e investimento
+
+ +
+
Esta classe representa a tela de manutenção do cliente.
+
+ +
+
Esta classe é um modelo de tabela para a visualização ManterCliente.
+
+ +
+
Classe que contém métodos para exibir mensagens de erro, aviso, sucesso e confirmação + Utiliza a classe JOptionPane para exibir as mensagens
+
+ +
+
Classe que controla a navegação entre as telas e o cadastro de clientes e contas + Age como um controlador de rotas e de dados
+
+ +
+
Esta é uma interface que define os métodos que uma tela deve implementar.
+
+ +
+
Classe responsável por vincular um cliente a uma conta.
+
+ +
+
Esta classe é um modelo de tabela para a visualização Vincular.
+
+
+
+
+
+
+
+ + diff --git a/doc/allpackages-index.html b/doc/allpackages-index.html new file mode 100644 index 0000000..ccb4a60 --- /dev/null +++ b/doc/allpackages-index.html @@ -0,0 +1,68 @@ + + + + +All Packages + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+
+
+
+
+ + diff --git a/doc/copy.svg b/doc/copy.svg new file mode 100644 index 0000000..d435f6c --- /dev/null +++ b/doc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/doc/element-list b/doc/element-list new file mode 100644 index 0000000..9345ecd --- /dev/null +++ b/doc/element-list @@ -0,0 +1,3 @@ +main.br.ufpr.controllers +main.br.ufpr.models +main.br.ufpr.views diff --git a/doc/help-doc.html b/doc/help-doc.html new file mode 100644 index 0000000..585b4c9 --- /dev/null +++ b/doc/help-doc.html @@ -0,0 +1,188 @@ + + + + +API Help + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exception Classes
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/doc/index-all.html b/doc/index-all.html new file mode 100644 index 0000000..ba3a2ee --- /dev/null +++ b/doc/index-all.html @@ -0,0 +1,504 @@ + + + + +Index + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E G H I L M N R S T V W 
All Classes and Interfaces|All Packages|Serialized Form +

A

+
+
areTextFieldsFilled(JTextField, String) - Static method in class main.br.ufpr.views.ManterCliente
+
+
Verifica se um campo de texto está preenchido.
+
+
aviso(Component, String) - Static method in class main.br.ufpr.controllers.Mensagens
+
+
Exibe uma mensagem de aviso
+
+
+

B

+
+
bairro - Variable in class main.br.ufpr.models.Endereco
+
 
+
+

C

+
+
cadastrarCliente(Cliente) - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método que cadastra um cliente na lista de clientes
+
+
cadastrarConta(Conta) - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método que cadastra uma conta na lista de contas
+
+
carregando(Component, String) - Static method in class main.br.ufpr.controllers.Mensagens
+
+
Exibe uma mensagem de carregamento
+
+
cidade - Variable in class main.br.ufpr.models.Endereco
+
 
+
Cliente - Class in main.br.ufpr.models
+
+
Esta classe representa um cliente no sistema.
+
+
Cliente(String, String, Endereco, String, String) - Constructor for class main.br.ufpr.models.Cliente
+
+
Construtor para a classe Cliente.
+
+
confirmar(Component, String) - Static method in class main.br.ufpr.controllers.Mensagens
+
+
Exibe uma mensagem de confirmação
+
+
Conta - Class in main.br.ufpr.models
+
+
Esta é uma classe abstrata que representa uma conta no sistema.
+
+
Conta(int, Cliente, double) - Constructor for class main.br.ufpr.models.Conta
+
+
Construtor para a classe Conta.
+
+
Conta(Cliente, double) - Constructor for class main.br.ufpr.models.Conta
+
+
Construtor para a classe Conta.
+
+
ContaCorrente - Class in main.br.ufpr.models
+
+
Esta classe representa uma Conta Corrente no sistema.
+
+
ContaCorrente(int, Cliente, double, double) - Constructor for class main.br.ufpr.models.ContaCorrente
+
+
Construtor para a classe ContaCorrente.
+
+
ContaCorrente(Cliente, double, double) - Constructor for class main.br.ufpr.models.ContaCorrente
+
+
Construtor para a classe ContaCorrente.
+
+
ContaI - Interface in main.br.ufpr.models
+
+
Esta é uma interface que define os métodos que uma conta deve implementar.
+
+
ContaInvestimento - Class in main.br.ufpr.models
+
+
Esta classe representa uma Conta de Investimento no sistema.
+
+
ContaInvestimento(int, Cliente, double, double, double) - Constructor for class main.br.ufpr.models.ContaInvestimento
+
+
Construtor para a classe ContaInvestimento.
+
+
ContaInvestimento(Cliente, double, double, double) - Constructor for class main.br.ufpr.models.ContaInvestimento
+
+
Construtor para a classe ContaInvestimento.
+
+
+

D

+
+
DELETE - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
deposita(double) - Method in class main.br.ufpr.models.Conta
+
+
Este método deposita um valor na conta.
+
+
deposita(double) - Method in interface main.br.ufpr.models.ContaI
+
+
Este método deposita um valor na conta.
+
+
deposita(double) - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método deposita um valor na conta.
+
+
DEPOSITO - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
dono - Variable in class main.br.ufpr.models.Conta
+
 
+
+

E

+
+
Endereco - Class in main.br.ufpr.models
+
+
Esta classe representa um Endereço no sistema.
+
+
Endereco(String, String, String, String) - Constructor for class main.br.ufpr.models.Endereco
+
+
Construtor para a classe Endereco.
+
+
erro(Component, String) - Static method in class main.br.ufpr.controllers.Mensagens
+
+
Exibe uma mensagem de erro
+
+
ERRO - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
EYE_CLOSED - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
EYE_OPEN - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
+

G

+
+
getClientes() - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método que retorna a lista de clientes
+
+
getColumnClass(int) - Method in class main.br.ufpr.views.ManterClienteTableModel
+
+
Este método retorna a classe do valor na coluna especificada.
+
+
getColumnClass(int) - Method in class main.br.ufpr.views.VincularTableModel
+
+
Este método retorna a classe do valor na coluna especificada.
+
+
getColumnCount() - Method in class main.br.ufpr.views.ManterClienteTableModel
+
+
Este método retorna o número de colunas da tabela.
+
+
getColumnCount() - Method in class main.br.ufpr.views.VincularTableModel
+
+
Este método retorna o número de colunas da tabela.
+
+
getColumnName(int) - Method in class main.br.ufpr.views.ManterClienteTableModel
+
+
Este método retorna o nome da coluna especificada.
+
+
getColumnName(int) - Method in class main.br.ufpr.views.VincularTableModel
+
+
Este método retorna o nome da coluna especificada.
+
+
getContas() - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método que retorna a lista de contas
+
+
getDepositoInicial() - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método retorna o depósito inicial da conta.
+
+
getDepositoMinimo() - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método retorna o depósito mínimo da conta.
+
+
getDono() - Method in interface main.br.ufpr.models.ContaI
+
+
Este método retorna o proprietário da conta.
+
+
getFrame() - Method in interface main.br.ufpr.models.Tela
+
+
Este método retorna o frame da tela.
+
+
getFrame() - Method in class main.br.ufpr.views.Home
+
+
Este método retorna o frame da tela.
+
+
getFrame() - Method in class main.br.ufpr.views.ManipularConta
+
+
Retorna o painel principal da tela
+
+
getFrame() - Method in class main.br.ufpr.views.ManterCliente
+
+
Este método retorna o frame da tela.
+
+
getFrame() - Method in class main.br.ufpr.views.VincularCliente
+
+
Retorna o painel principal da tela.
+
+
getMontanteMinimo() - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método retorna o montante mínimo da conta.
+
+
getNumero() - Method in interface main.br.ufpr.models.ContaI
+
+
Este método retorna o número da conta.
+
+
getRowCount() - Method in class main.br.ufpr.views.ManterClienteTableModel
+
+
Este método retorna o número de linhas da tabela.
+
+
getRowCount() - Method in class main.br.ufpr.views.VincularTableModel
+
+
Este método retorna o número de linhas da tabela.
+
+
getSaldo() - Method in interface main.br.ufpr.models.ContaI
+
+
Este método retorna o saldo da conta.
+
+
getValueAt(int, int) - Method in class main.br.ufpr.views.ManterClienteTableModel
+
+
Este método retorna o valor na célula especificada.
+
+
getValueAt(int, int) - Method in class main.br.ufpr.views.VincularTableModel
+
+
Este método retorna o valor na célula especificada.
+
+
goBack() - Static method in class main.br.ufpr.controllers.Sistema
+
+
Remove a tela do topo da pilha de navegação e chama o método navigate()
+
+
+

H

+
+
Home - Class in main.br.ufpr.views
+
+
Esta classe representa a tela inicial do sistema.
+
+
Home() - Constructor for class main.br.ufpr.views.Home
+
+
Construtor para a classe Home.
+
+
+

I

+
+
icon() - Method in enum class main.br.ufpr.controllers.Imagens
+
+
Retorna um ImageIcon a partir do caminho da imagem especificado.
+
+
image() - Method in enum class main.br.ufpr.controllers.Imagens
+
+
Retorna uma Image a partir do caminho da imagem especificado.
+
+
Imagens - Enum Class in main.br.ufpr.controllers
+
+
Enum que contém os caminhos das imagens utilizadas no projeto
+
+
INVESTIMENTO - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
isInteger(String) - Static method in class main.br.ufpr.views.ManterCliente
+
+
Verifica se uma string pode ser convertida para um número inteiro.
+
+
+

L

+
+
LOADING - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
logradouro - Variable in class main.br.ufpr.models.Endereco
+
 
+
+

M

+
+
main(String[]) - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método main que inicializa a aplicação + + Cria uma instância da classe Home e a adiciona na pilha de navegação + Define o ícone da aplicação como a imagem MAIN + Define o tamanho mínimo da janela como 700x500 + Define a posição da janela como centralizada + Define a operação padrão de fechamento da janela como EXIT_ON_CLOSE + Chama o método navigate() + Define a janela como visível + Inicializa 3 clientes e os cadastra
+
+
MAIN - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
main.br.ufpr.controllers - package main.br.ufpr.controllers
+
 
+
main.br.ufpr.models - package main.br.ufpr.models
+
 
+
main.br.ufpr.views - package main.br.ufpr.views
+
 
+
ManipularConta - Class in main.br.ufpr.views
+
+
Classe que representa a tela de manipulação de conta + Realiza transações como saque, depósito e investimento
+
+
ManipularConta() - Constructor for class main.br.ufpr.views.ManipularConta
+
+
Construtor da classe ManipularConta + Adiciona os ícones aos botões e painéis + Adiciona os listeners aos botões
+
+
ManipularConta(Cliente) - Constructor for class main.br.ufpr.views.ManipularConta
+
+
Construtor da classe ManipularConta + Serve para instanciar a classe e carregar os dados da conta de um cliente
+
+
ManterCliente - Class in main.br.ufpr.views
+
+
Esta classe representa a tela de manutenção do cliente.
+
+
ManterCliente() - Constructor for class main.br.ufpr.views.ManterCliente
+
+
Construtor para a classe ManterCliente.
+
+
ManterClienteTableModel - Class in main.br.ufpr.views
+
+
Esta classe é um modelo de tabela para a visualização ManterCliente.
+
+
ManterClienteTableModel(List<Cliente>) - Constructor for class main.br.ufpr.views.ManterClienteTableModel
+
+
Construtor para a classe ManterClienteTableModel.
+
+
Mensagens - Class in main.br.ufpr.controllers
+
+
Classe que contém métodos para exibir mensagens de erro, aviso, sucesso e confirmação + Utiliza a classe JOptionPane para exibir as mensagens
+
+
Mensagens() - Constructor for class main.br.ufpr.controllers.Mensagens
+
 
+
+

N

+
+
navigate() - Static method in class main.br.ufpr.controllers.Sistema
+
+
Método que seta o conteúdo do frame para a tela que está no topo da pilha de navegação
+
+
navigate(Tela) - Static method in class main.br.ufpr.controllers.Sistema
+
+
Adiciona a tela passada como parâmetro na pilha de navegação e chama o método navigate()
+
+
numero - Variable in class main.br.ufpr.models.Conta
+
 
+
numero - Variable in class main.br.ufpr.models.Endereco
+
 
+
+

R

+
+
remunera() - Method in class main.br.ufpr.models.Conta
+
+
Este é um método abstrato que deve ser implementado nas subclasses.
+
+
remunera() - Method in class main.br.ufpr.models.ContaCorrente
+
+
Este método calcula a remuneração da conta.
+
+
remunera() - Method in interface main.br.ufpr.models.ContaI
+
+
Este é um método que deve ser implementado nas classes que implementam esta interface.
+
+
remunera() - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método calcula a remuneração da conta.
+
+
REMUNERA - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
+

S

+
+
saca(double) - Method in class main.br.ufpr.models.Conta
+
+
Este método saca um valor da conta.
+
+
saca(double) - Method in class main.br.ufpr.models.ContaCorrente
+
+
Este método saca um valor da conta.
+
+
saca(double) - Method in interface main.br.ufpr.models.ContaI
+
+
Este método saca um valor da conta.
+
+
saca(double) - Method in class main.br.ufpr.models.ContaInvestimento
+
+
Este método saca um valor da conta.
+
+
saldo - Variable in class main.br.ufpr.models.Conta
+
 
+
SAQUE - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
SEARCH - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
Sistema - Class in main.br.ufpr.controllers
+
+
Classe que controla a navegação entre as telas e o cadastro de clientes e contas + Age como um controlador de rotas e de dados
+
+
Sistema() - Constructor for class main.br.ufpr.controllers.Sistema
+
 
+
SUCCESS - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
sucesso(Component, String) - Static method in class main.br.ufpr.controllers.Mensagens
+
+
Exibe uma mensagem de sucesso
+
+
+

T

+
+
Tela - Interface in main.br.ufpr.models
+
+
Esta é uma interface que define os métodos que uma tela deve implementar.
+
+
+

V

+
+
validaCpf(String) - Static method in class main.br.ufpr.views.ManterCliente
+
+
Valida um CPF.
+
+
valueOf(String) - Static method in enum class main.br.ufpr.controllers.Imagens
+
+
Returns the enum constant of this class with the specified name.
+
+
values() - Static method in enum class main.br.ufpr.controllers.Imagens
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
VincularCliente - Class in main.br.ufpr.views
+
+
Classe responsável por vincular um cliente a uma conta.
+
+
VincularCliente() - Constructor for class main.br.ufpr.views.VincularCliente
+
+
Construtor da classe VincularCliente.
+
+
VincularTableModel - Class in main.br.ufpr.views
+
+
Esta classe é um modelo de tabela para a visualização Vincular.
+
+
VincularTableModel(List<Cliente>) - Constructor for class main.br.ufpr.views.VincularTableModel
+
+
Construtor para a classe VincularTableModel.
+
+
+

W

+
+
WARNING - Enum constant in enum class main.br.ufpr.controllers.Imagens
+
 
+
+A B C D E G H I L M N R S T V W 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..88e5bab --- /dev/null +++ b/doc/index.html @@ -0,0 +1,67 @@ + + + + +Overview + + + + + + + + + + + + + + +
+ +
+
+
+
Packages
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+ + diff --git a/doc/legal/COPYRIGHT b/doc/legal/COPYRIGHT new file mode 100644 index 0000000..ca74fff --- /dev/null +++ b/doc/legal/COPYRIGHT @@ -0,0 +1 @@ +Please see ..\java.base\COPYRIGHT diff --git a/doc/legal/LICENSE b/doc/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/doc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/doc/legal/jquery.md b/doc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/doc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.6.1 + +### jQuery License +``` +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/doc/legal/jqueryUI.md b/doc/legal/jqueryUI.md new file mode 100644 index 0000000..8bda9d7 --- /dev/null +++ b/doc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.2 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/doc/link.svg b/doc/link.svg new file mode 100644 index 0000000..dadef51 --- /dev/null +++ b/doc/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/doc/main/br/ufpr/controllers/Imagens.html b/doc/main/br/ufpr/controllers/Imagens.html new file mode 100644 index 0000000..2b7924e --- /dev/null +++ b/doc/main/br/ufpr/controllers/Imagens.html @@ -0,0 +1,360 @@ + + + + +Imagens + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class Imagens

+
+
java.lang.Object +
java.lang.Enum<Imagens> +
main.br.ufpr.controllers.Imagens
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<Imagens>, Constable
+
+
+
public enum Imagens +extends Enum<Imagens>
+
Enum que contém os caminhos das imagens utilizadas no projeto
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      MAIN

      +
      public static final Imagens MAIN
      +
      +
    • +
    • +
      +

      EYE_OPEN

      +
      public static final Imagens EYE_OPEN
      +
      +
    • +
    • +
      +

      EYE_CLOSED

      +
      public static final Imagens EYE_CLOSED
      +
      +
    • +
    • + +
    • +
    • +
      +

      DELETE

      +
      public static final Imagens DELETE
      +
      +
    • +
    • +
      +

      DEPOSITO

      +
      public static final Imagens DEPOSITO
      +
      +
    • +
    • +
      +

      SAQUE

      +
      public static final Imagens SAQUE
      +
      +
    • +
    • +
      +

      REMUNERA

      +
      public static final Imagens REMUNERA
      +
      +
    • +
    • +
      +

      INVESTIMENTO

      +
      public static final Imagens INVESTIMENTO
      +
      +
    • +
    • +
      +

      ERRO

      +
      public static final Imagens ERRO
      +
      +
    • +
    • +
      +

      WARNING

      +
      public static final Imagens WARNING
      +
      +
    • +
    • +
      +

      SUCCESS

      +
      public static final Imagens SUCCESS
      +
      +
    • +
    • +
      +

      LOADING

      +
      public static final Imagens LOADING
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Imagens[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Imagens valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      icon

      +
      public ImageIcon icon()
      +
      Retorna um ImageIcon a partir do caminho da imagem especificado. + + Este método tenta carregar a imagem do diretório /assets usando o caminho especificado. + Se a imagem for carregada com sucesso, um novo ImageIcon é criado e retornado. + Se ocorrer um erro durante o carregamento da imagem, uma mensagem de erro é impressa no console e o método retorna null.
      +
      +
      Returns:
      +
      ImageIcon se a imagem for carregada com sucesso, null caso contrário.
      +
      +
      +
    • +
    • +
      +

      image

      +
      public Image image()
      +
      Retorna uma Image a partir do caminho da imagem especificado. + + Este método tenta carregar a imagem do diretório /assets usando o caminho especificado. + Se a imagem for carregada com sucesso, a imagem é retornada. + Se ocorrer um erro durante o carregamento da imagem, uma mensagem de erro é impressa no console e o método retorna null.
      +
      +
      Returns:
      +
      Image se a imagem for carregada com sucesso, null caso contrário.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/controllers/Mensagens.html b/doc/main/br/ufpr/controllers/Mensagens.html new file mode 100644 index 0000000..02a4f9f --- /dev/null +++ b/doc/main/br/ufpr/controllers/Mensagens.html @@ -0,0 +1,270 @@ + + + + +Mensagens + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Mensagens

+
+
java.lang.Object +
main.br.ufpr.controllers.Mensagens
+
+
+
+
public class Mensagens +extends Object
+
Classe que contém métodos para exibir mensagens de erro, aviso, sucesso e confirmação + Utiliza a classe JOptionPane para exibir as mensagens
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Mensagens

      +
      public Mensagens()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      erro

      +
      public static void erro(Component origin, + String mensagem)
      +
      Exibe uma mensagem de erro
      +
      +
      Parameters:
      +
      origin - O componente que originou a mensagem
      +
      mensagem - A mensagem a ser exibida
      +
      +
      +
    • +
    • +
      +

      aviso

      +
      public static void aviso(Component origin, + String mensagem)
      +
      Exibe uma mensagem de aviso
      +
      +
      Parameters:
      +
      origin - O componente que originou a mensagem
      +
      mensagem - A mensagem a ser exibida
      +
      +
      +
    • +
    • +
      +

      sucesso

      +
      public static void sucesso(Component origin, + String mensagem)
      +
      Exibe uma mensagem de sucesso
      +
      +
      Parameters:
      +
      origin - O componente que originou a mensagem
      +
      mensagem - A mensagem a ser exibida
      +
      +
      +
    • +
    • +
      +

      carregando

      +
      public static void carregando(Component origin, + String mensagem)
      +
      Exibe uma mensagem de carregamento
      +
      +
      Parameters:
      +
      origin - O componente que originou a mensagem
      +
      mensagem - A mensagem a ser exibida
      +
      +
      +
    • +
    • +
      +

      confirmar

      +
      public static boolean confirmar(Component origin, + String mensagem)
      +
      Exibe uma mensagem de confirmação
      +
      +
      Parameters:
      +
      origin - O componente que originou a mensagem
      +
      mensagem - A mensagem a ser exibida
      +
      Returns:
      +
      true se o usuário confirmar a ação, false caso contrário
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/controllers/Sistema.html b/doc/main/br/ufpr/controllers/Sistema.html new file mode 100644 index 0000000..5368c11 --- /dev/null +++ b/doc/main/br/ufpr/controllers/Sistema.html @@ -0,0 +1,313 @@ + + + + +Sistema + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Sistema

+
+
java.lang.Object +
main.br.ufpr.controllers.Sistema
+
+
+
+
public class Sistema +extends Object
+
Classe que controla a navegação entre as telas e o cadastro de clientes e contas + Age como um controlador de rotas e de dados
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static void
    + +
    +
    Método que cadastra um cliente na lista de clientes
    +
    +
    static void
    + +
    +
    Método que cadastra uma conta na lista de contas
    +
    +
    static List<Cliente>
    + +
    +
    Método que retorna a lista de clientes
    +
    +
    static List<Conta>
    + +
    +
    Método que retorna a lista de contas
    +
    +
    static void
    + +
    +
    Remove a tela do topo da pilha de navegação e chama o método navigate()
    +
    +
    static void
    +
    main(String[] args)
    +
    +
    Método main que inicializa a aplicação + + Cria uma instância da classe Home e a adiciona na pilha de navegação + Define o ícone da aplicação como a imagem MAIN + Define o tamanho mínimo da janela como 700x500 + Define a posição da janela como centralizada + Define a operação padrão de fechamento da janela como EXIT_ON_CLOSE + Chama o método navigate() + Define a janela como visível + Inicializa 3 clientes e os cadastra
    +
    +
    static void
    + +
    +
    Método que seta o conteúdo do frame para a tela que está no topo da pilha de navegação
    +
    +
    static void
    +
    navigate(Tela frame)
    +
    +
    Adiciona a tela passada como parâmetro na pilha de navegação e chama o método navigate()
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Sistema

      +
      public Sistema()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • + +
    • +
    • + +
    • +
    • +
      +

      goBack

      +
      public static void goBack()
      +
      Remove a tela do topo da pilha de navegação e chama o método navigate()
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      cadastrarCliente

      +
      public static void cadastrarCliente(Cliente cliente)
      +
      Método que cadastra um cliente na lista de clientes
      +
      +
      Parameters:
      +
      cliente -
      +
      +
      +
    • +
    • +
      +

      cadastrarConta

      +
      public static void cadastrarConta(Conta conta)
      +
      Método que cadastra uma conta na lista de contas
      +
      +
      Parameters:
      +
      conta -
      +
      +
      +
    • +
    • +
      +

      getClientes

      +
      public static List<Cliente> getClientes()
      +
      Método que retorna a lista de clientes
      +
      +
      Returns:
      +
      List
      +
      +
      +
    • +
    • +
      +

      getContas

      +
      public static List<Conta> getContas()
      +
      Método que retorna a lista de contas
      +
      +
      Returns:
      +
      List
      +
      +
      +
    • +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      Método main que inicializa a aplicação + + Cria uma instância da classe Home e a adiciona na pilha de navegação + Define o ícone da aplicação como a imagem MAIN + Define o tamanho mínimo da janela como 700x500 + Define a posição da janela como centralizada + Define a operação padrão de fechamento da janela como EXIT_ON_CLOSE + Chama o método navigate() + Define a janela como visível + Inicializa 3 clientes e os cadastra
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/controllers/package-summary.html b/doc/main/br/ufpr/controllers/package-summary.html new file mode 100644 index 0000000..6d3221c --- /dev/null +++ b/doc/main/br/ufpr/controllers/package-summary.html @@ -0,0 +1,105 @@ + + + + +main.br.ufpr.controllers + + + + + + + + + + + + + + +
+ +
+
+
+

Package main.br.ufpr.controllers

+
+
+
package main.br.ufpr.controllers
+
+
    +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Enum que contém os caminhos das imagens utilizadas no projeto
    +
    + +
    +
    Classe que contém métodos para exibir mensagens de erro, aviso, sucesso e confirmação + Utiliza a classe JOptionPane para exibir as mensagens
    +
    + +
    +
    Classe que controla a navegação entre as telas e o cadastro de clientes e contas + Age como um controlador de rotas e de dados
    +
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/doc/main/br/ufpr/controllers/package-tree.html b/doc/main/br/ufpr/controllers/package-tree.html new file mode 100644 index 0000000..7c79e27 --- /dev/null +++ b/doc/main/br/ufpr/controllers/package-tree.html @@ -0,0 +1,86 @@ + + + + +main.br.ufpr.controllers Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package main.br.ufpr.controllers

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+
+
+ + diff --git a/doc/main/br/ufpr/models/Cliente.html b/doc/main/br/ufpr/models/Cliente.html new file mode 100644 index 0000000..ede62fc --- /dev/null +++ b/doc/main/br/ufpr/models/Cliente.html @@ -0,0 +1,167 @@ + + + + +Cliente + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Cliente

+
+
java.lang.Object +
main.br.ufpr.models.Cliente
+
+
+
+
public class Cliente +extends Object
+
Esta classe representa um cliente no sistema. + Inclui informações como nome, sobrenome, endereço, CPF, RG e conta.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Cliente

      +
      public Cliente(String nome, + String sobrenome, + Endereco endereco, + String cpf, + String rg)
      +
      Construtor para a classe Cliente. + Valida o CPF e define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      nome - O primeiro nome do cliente.
      +
      sobrenome - O sobrenome do cliente.
      +
      endereco - O endereço do cliente.
      +
      cpf - O CPF do cliente.
      +
      rg - O RG do cliente.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/Conta.html b/doc/main/br/ufpr/models/Conta.html new file mode 100644 index 0000000..82868a0 --- /dev/null +++ b/doc/main/br/ufpr/models/Conta.html @@ -0,0 +1,318 @@ + + + + +Conta + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Conta

+
+
java.lang.Object +
main.br.ufpr.models.Conta
+
+
+
+
All Implemented Interfaces:
+
ContaI
+
+
+
Direct Known Subclasses:
+
ContaCorrente, ContaInvestimento
+
+
+
public abstract class Conta +extends Object +implements ContaI
+
Esta é uma classe abstrata que representa uma conta no sistema. + Inclui informações como número da conta, proprietário (cliente) e saldo. + Implementa a interface ContaI.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    protected Cliente
    + +
     
    +
    protected int
    + +
     
    +
    protected double
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    Conta(int numero, + Cliente dono, + double saldo)
    +
    +
    Construtor para a classe Conta.
    +
    +
    Conta(Cliente dono, + double saldo)
    +
    +
    Construtor para a classe Conta.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    +
    deposita(double valor)
    +
    +
    Este método deposita um valor na conta.
    +
    +
    abstract void
    + +
    +
    Este é um método abstrato que deve ser implementado nas subclasses.
    +
    +
    boolean
    +
    saca(double valor)
    +
    +
    Este método saca um valor da conta.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Methods inherited from interface main.br.ufpr.models.ContaI

    +getDono, getNumero, getSaldo
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      numero

      +
      protected int numero
      +
      +
    • +
    • +
      +

      dono

      +
      protected Cliente dono
      +
      +
    • +
    • +
      +

      saldo

      +
      protected double saldo
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Conta

      +
      public Conta(int numero, + Cliente dono, + double saldo)
      +
      Construtor para a classe Conta. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      numero - O número da conta.
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      +
      +
    • +
    • +
      +

      Conta

      +
      public Conta(Cliente dono, + double saldo)
      +
      Construtor para a classe Conta. + Define os valores iniciais para as variáveis de instância. + O número da conta é incrementado automaticamente.
      +
      +
      Parameters:
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      deposita

      +
      public boolean deposita(double valor)
      +
      Este método deposita um valor na conta. + Verifica se o valor é maior que 0 antes de depositar.
      +
      +
      Specified by:
      +
      deposita in interface ContaI
      +
      Parameters:
      +
      valor - O valor a ser depositado.
      +
      Returns:
      +
      Verdadeiro se o depósito foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      saca

      +
      public boolean saca(double valor)
      +
      Este método saca um valor da conta. + Verifica se o valor é maior que 0 e menor ou igual ao saldo antes de sacar.
      +
      +
      Specified by:
      +
      saca in interface ContaI
      +
      Parameters:
      +
      valor - O valor a ser sacado.
      +
      Returns:
      +
      Verdadeiro se o saque foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      remunera

      +
      public abstract void remunera()
      +
      Este é um método abstrato que deve ser implementado nas subclasses. + Ele é usado para calcular a remuneração da conta.
      +
      +
      Specified by:
      +
      remunera in interface ContaI
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/ContaCorrente.html b/doc/main/br/ufpr/models/ContaCorrente.html new file mode 100644 index 0000000..c7788a2 --- /dev/null +++ b/doc/main/br/ufpr/models/ContaCorrente.html @@ -0,0 +1,268 @@ + + + + +ContaCorrente + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ContaCorrente

+
+
java.lang.Object +
main.br.ufpr.models.Conta +
main.br.ufpr.models.ContaCorrente
+
+
+
+
+
All Implemented Interfaces:
+
ContaI
+
+
+
public class ContaCorrente +extends Conta
+
Esta classe representa uma Conta Corrente no sistema. + É uma subclasse da classe Conta e inclui informações adicionais como depósito inicial e limite.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    +

    Fields inherited from class main.br.ufpr.models.Conta

    +dono, numero, saldo
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ContaCorrente(int numero, + Cliente dono, + double saldo, + double limite)
    +
    +
    Construtor para a classe ContaCorrente.
    +
    +
    ContaCorrente(Cliente dono, + double saldo, + double limite)
    +
    +
    Construtor para a classe ContaCorrente.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
    +
    Este método calcula a remuneração da conta.
    +
    +
    boolean
    +
    saca(double valor)
    +
    +
    Este método saca um valor da conta.
    +
    +
    +
    +
    +
    +

    Methods inherited from class main.br.ufpr.models.Conta

    +deposita
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Methods inherited from interface main.br.ufpr.models.ContaI

    +getDono, getNumero, getSaldo
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ContaCorrente

      +
      public ContaCorrente(int numero, + Cliente dono, + double saldo, + double limite)
      +
      Construtor para a classe ContaCorrente. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      numero - O número da conta.
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      limite - O limite da conta.
      +
      +
      +
    • +
    • +
      +

      ContaCorrente

      +
      public ContaCorrente(Cliente dono, + double saldo, + double limite)
      +
      Construtor para a classe ContaCorrente. + Define os valores iniciais para as variáveis de instância. + O número da conta é incrementado automaticamente.
      +
      +
      Parameters:
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      limite - O limite da conta.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      saca

      +
      public boolean saca(double valor)
      +
      Este método saca um valor da conta. + Verifica se o valor é maior que 0 e menor ou igual ao saldo mais o limite antes de sacar.
      +
      +
      Specified by:
      +
      saca in interface ContaI
      +
      Overrides:
      +
      saca in class Conta
      +
      Parameters:
      +
      valor - O valor a ser sacado.
      +
      Returns:
      +
      Verdadeiro se o saque foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      remunera

      +
      public void remunera()
      +
      Este método calcula a remuneração da conta. + Adiciona 1% do saldo atual ao saldo.
      +
      +
      Specified by:
      +
      remunera in interface ContaI
      +
      Specified by:
      +
      remunera in class Conta
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/ContaI.html b/doc/main/br/ufpr/models/ContaI.html new file mode 100644 index 0000000..056a072 --- /dev/null +++ b/doc/main/br/ufpr/models/ContaI.html @@ -0,0 +1,232 @@ + + + + +ContaI + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface ContaI

+
+
+
+
All Known Implementing Classes:
+
Conta, ContaCorrente, ContaInvestimento
+
+
+
public interface ContaI
+
Esta é uma interface que define os métodos que uma conta deve implementar. + Os métodos incluem operações básicas como depósito, saque, obtenção do proprietário, número e saldo da conta, e remuneração.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    +
    deposita(double valor)
    +
    +
    Este método deposita um valor na conta.
    +
    + + +
    +
    Este método retorna o proprietário da conta.
    +
    +
    int
    + +
    +
    Este método retorna o número da conta.
    +
    +
    double
    + +
    +
    Este método retorna o saldo da conta.
    +
    +
    void
    + +
    +
    Este é um método que deve ser implementado nas classes que implementam esta interface.
    +
    +
    boolean
    +
    saca(double valor)
    +
    +
    Este método saca um valor da conta.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      deposita

      +
      boolean deposita(double valor)
      +
      Este método deposita um valor na conta.
      +
      +
      Parameters:
      +
      valor - O valor a ser depositado.
      +
      Returns:
      +
      Verdadeiro se o depósito foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      saca

      +
      boolean saca(double valor)
      +
      Este método saca um valor da conta.
      +
      +
      Parameters:
      +
      valor - O valor a ser sacado.
      +
      Returns:
      +
      Verdadeiro se o saque foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      getDono

      +
      Cliente getDono()
      +
      Este método retorna o proprietário da conta.
      +
      +
      Returns:
      +
      O proprietário da conta.
      +
      +
      +
    • +
    • +
      +

      getNumero

      +
      int getNumero()
      +
      Este método retorna o número da conta.
      +
      +
      Returns:
      +
      O número da conta.
      +
      +
      +
    • +
    • +
      +

      getSaldo

      +
      double getSaldo()
      +
      Este método retorna o saldo da conta.
      +
      +
      Returns:
      +
      O saldo da conta.
      +
      +
      +
    • +
    • +
      +

      remunera

      +
      void remunera()
      +
      Este é um método que deve ser implementado nas classes que implementam esta interface. + Ele é usado para calcular a remuneração da conta.
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/ContaInvestimento.html b/doc/main/br/ufpr/models/ContaInvestimento.html new file mode 100644 index 0000000..fc46b7e --- /dev/null +++ b/doc/main/br/ufpr/models/ContaInvestimento.html @@ -0,0 +1,342 @@ + + + + +ContaInvestimento + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ContaInvestimento

+
+
java.lang.Object +
main.br.ufpr.models.Conta +
main.br.ufpr.models.ContaInvestimento
+
+
+
+
+
All Implemented Interfaces:
+
ContaI
+
+
+
public class ContaInvestimento +extends Conta
+
Esta classe representa uma Conta de Investimento no sistema. + É uma subclasse da classe Conta e inclui informações adicionais como depósito inicial, depósito mínimo e montante mínimo.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    +

    Fields inherited from class main.br.ufpr.models.Conta

    +dono, numero, saldo
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ContaInvestimento(int numero, + Cliente dono, + double saldo, + double depositoMinimo, + double montanteMinimo)
    +
    +
    Construtor para a classe ContaInvestimento.
    +
    +
    ContaInvestimento(Cliente dono, + double saldo, + double depositoMinimo, + double montanteMinimo)
    +
    +
    Construtor para a classe ContaInvestimento.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    +
    deposita(double valor)
    +
    +
    Este método deposita um valor na conta.
    +
    +
    double
    + +
    +
    Este método retorna o depósito inicial da conta.
    +
    +
    double
    + +
    +
    Este método retorna o depósito mínimo da conta.
    +
    +
    double
    + +
    +
    Este método retorna o montante mínimo da conta.
    +
    +
    void
    + +
    +
    Este método calcula a remuneração da conta.
    +
    +
    boolean
    +
    saca(double valor)
    +
    +
    Este método saca um valor da conta.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Methods inherited from interface main.br.ufpr.models.ContaI

    +getDono, getNumero, getSaldo
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ContaInvestimento

      +
      public ContaInvestimento(int numero, + Cliente dono, + double saldo, + double depositoMinimo, + double montanteMinimo)
      +
      Construtor para a classe ContaInvestimento. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      numero - O número da conta.
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      depositoMinimo - O depósito mínimo da conta.
      +
      montanteMinimo - O montante mínimo da conta.
      +
      +
      +
    • +
    • +
      +

      ContaInvestimento

      +
      public ContaInvestimento(Cliente dono, + double saldo, + double depositoMinimo, + double montanteMinimo)
      +
      Construtor para a classe ContaInvestimento. + Define os valores iniciais para as variáveis de instância. + O número da conta é incrementado automaticamente.
      +
      +
      Parameters:
      +
      dono - O proprietário da conta.
      +
      saldo - O saldo inicial da conta.
      +
      depositoMinimo - O depósito mínimo da conta.
      +
      montanteMinimo - O montante mínimo da conta.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      deposita

      +
      public boolean deposita(double valor)
      +
      Este método deposita um valor na conta. + Verifica se o valor é maior ou igual ao depósito mínimo antes de depositar.
      +
      +
      Specified by:
      +
      deposita in interface ContaI
      +
      Overrides:
      +
      deposita in class Conta
      +
      Parameters:
      +
      valor - O valor a ser depositado.
      +
      Returns:
      +
      Verdadeiro se o depósito foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      saca

      +
      public boolean saca(double valor)
      +
      Este método saca um valor da conta. + Verifica se o novo valor do saldo (considerando o saque) é maior ou igual ao montante mínimo antes de sacar.
      +
      +
      Specified by:
      +
      saca in interface ContaI
      +
      Overrides:
      +
      saca in class Conta
      +
      Parameters:
      +
      valor - O valor a ser sacado.
      +
      Returns:
      +
      Verdadeiro se o saque foi bem-sucedido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      remunera

      +
      public void remunera()
      +
      Este método calcula a remuneração da conta. + Adiciona 2% do saldo atual ao saldo.
      +
      +
      Specified by:
      +
      remunera in interface ContaI
      +
      Specified by:
      +
      remunera in class Conta
      +
      +
      +
    • +
    • +
      +

      getDepositoMinimo

      +
      public double getDepositoMinimo()
      +
      Este método retorna o depósito mínimo da conta.
      +
      +
      Returns:
      +
      O depósito mínimo da conta.
      +
      +
      +
    • +
    • +
      +

      getMontanteMinimo

      +
      public double getMontanteMinimo()
      +
      Este método retorna o montante mínimo da conta.
      +
      +
      Returns:
      +
      O montante mínimo da conta.
      +
      +
      +
    • +
    • +
      +

      getDepositoInicial

      +
      public double getDepositoInicial()
      +
      Este método retorna o depósito inicial da conta.
      +
      +
      Returns:
      +
      O depósito inicial da conta.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/Endereco.html b/doc/main/br/ufpr/models/Endereco.html new file mode 100644 index 0000000..3893ce2 --- /dev/null +++ b/doc/main/br/ufpr/models/Endereco.html @@ -0,0 +1,220 @@ + + + + +Endereco + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Endereco

+
+
java.lang.Object +
main.br.ufpr.models.Endereco
+
+
+
+
public class Endereco +extends Object
+
Esta classe representa um Endereço no sistema. + Inclui informações como logradouro, bairro, número e cidade.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      logradouro

      +
      public String logradouro
      +
      +
    • +
    • +
      +

      bairro

      +
      public String bairro
      +
      +
    • +
    • +
      +

      numero

      +
      public int numero
      +
      +
    • +
    • +
      +

      cidade

      +
      public String cidade
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Endereco

      +
      public Endereco(String logradouro, + String bairro, + String numeroS, + String cidade)
      +
      Construtor para a classe Endereco. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      logradouro - O logradouro do endereço.
      +
      bairro - O bairro do endereço.
      +
      numeroS - O número do endereço como uma String.
      +
      cidade - A cidade do endereço.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/Tela.html b/doc/main/br/ufpr/models/Tela.html new file mode 100644 index 0000000..079edcb --- /dev/null +++ b/doc/main/br/ufpr/models/Tela.html @@ -0,0 +1,151 @@ + + + + +Tela + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface Tela

+
+
+
+
All Known Implementing Classes:
+
Home, ManipularConta, ManterCliente, VincularCliente
+
+
+
public interface Tela
+
Esta é uma interface que define os métodos que uma tela deve implementar. + Os métodos incluem operações básicas como obter o frame da tela.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Este método retorna o frame da tela.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getFrame

      +
      JPanel getFrame()
      +
      Este método retorna o frame da tela.
      +
      +
      Returns:
      +
      O frame da tela.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/models/package-summary.html b/doc/main/br/ufpr/models/package-summary.html new file mode 100644 index 0000000..a0ab82d --- /dev/null +++ b/doc/main/br/ufpr/models/package-summary.html @@ -0,0 +1,119 @@ + + + + +main.br.ufpr.models + + + + + + + + + + + + + + +
+ +
+
+
+

Package main.br.ufpr.models

+
+
+
package main.br.ufpr.models
+
+
    +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Esta classe representa um cliente no sistema.
    +
    + +
    +
    Esta é uma classe abstrata que representa uma conta no sistema.
    +
    + +
    +
    Esta classe representa uma Conta Corrente no sistema.
    +
    + +
    +
    Esta é uma interface que define os métodos que uma conta deve implementar.
    +
    + +
    +
    Esta classe representa uma Conta de Investimento no sistema.
    +
    + +
    +
    Esta classe representa um Endereço no sistema.
    +
    + +
    +
    Esta é uma interface que define os métodos que uma tela deve implementar.
    +
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/doc/main/br/ufpr/models/package-tree.html b/doc/main/br/ufpr/models/package-tree.html new file mode 100644 index 0000000..52c1d45 --- /dev/null +++ b/doc/main/br/ufpr/models/package-tree.html @@ -0,0 +1,85 @@ + + + + +main.br.ufpr.models Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package main.br.ufpr.models

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+
    +
  • main.br.ufpr.models.ContaI
  • +
  • main.br.ufpr.models.Tela
  • +
+
+
+
+
+ + diff --git a/doc/main/br/ufpr/views/Home.html b/doc/main/br/ufpr/views/Home.html new file mode 100644 index 0000000..1059855 --- /dev/null +++ b/doc/main/br/ufpr/views/Home.html @@ -0,0 +1,192 @@ + + + + +Home + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Home

+
+
java.lang.Object +
main.br.ufpr.views.Home
+
+
+
+
All Implemented Interfaces:
+
Tela
+
+
+
public class Home +extends Object +implements Tela
+
Esta classe representa a tela inicial do sistema. + Ela implementa a interface Tela e define os botões e ações da tela inicial.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Home

      +
      public Home()
      +
      Construtor para a classe Home. + Define os valores iniciais para as variáveis de instância e adiciona os ouvintes de ação aos botões.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getFrame

      +
      public JPanel getFrame()
      +
      Este método retorna o frame da tela.
      +
      +
      Specified by:
      +
      getFrame in interface Tela
      +
      Returns:
      +
      O frame da tela.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/ManipularConta.html b/doc/main/br/ufpr/views/ManipularConta.html new file mode 100644 index 0000000..998e41a --- /dev/null +++ b/doc/main/br/ufpr/views/ManipularConta.html @@ -0,0 +1,226 @@ + + + + +ManipularConta + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ManipularConta

+
+
java.lang.Object +
main.br.ufpr.views.ManipularConta
+
+
+
+
All Implemented Interfaces:
+
Tela
+
+
+
public class ManipularConta +extends Object +implements Tela
+
Classe que representa a tela de manipulação de conta + Realiza transações como saque, depósito e investimento
+
+
See Also:
+
+ +
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Construtor da classe ManipularConta + Adiciona os ícones aos botões e painéis + Adiciona os listeners aos botões
    +
    + +
    +
    Construtor da classe ManipularConta + Serve para instanciar a classe e carregar os dados da conta de um cliente
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Retorna o painel principal da tela
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ManipularConta

      +
      public ManipularConta()
      +
      Construtor da classe ManipularConta + Adiciona os ícones aos botões e painéis + Adiciona os listeners aos botões
      +
      +
    • +
    • +
      +

      ManipularConta

      +
      public ManipularConta(Cliente cliente)
      +
      Construtor da classe ManipularConta + Serve para instanciar a classe e carregar os dados da conta de um cliente
      +
      +
      Parameters:
      +
      cliente - Cliente que será manipulado
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getFrame

      +
      public JPanel getFrame()
      +
      Retorna o painel principal da tela
      +
      +
      Specified by:
      +
      getFrame in interface Tela
      +
      Returns:
      +
      JPanel
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/ManterCliente.html b/doc/main/br/ufpr/views/ManterCliente.html new file mode 100644 index 0000000..c32f7f9 --- /dev/null +++ b/doc/main/br/ufpr/views/ManterCliente.html @@ -0,0 +1,249 @@ + + + + +ManterCliente + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ManterCliente

+
+
java.lang.Object +
main.br.ufpr.views.ManterCliente
+
+
+
+
All Implemented Interfaces:
+
Tela
+
+
+
public class ManterCliente +extends Object +implements Tela
+
Esta classe representa a tela de manutenção do cliente. + Ela implementa a interface Tela e define os campos de entrada e botões para inserir, editar, excluir e buscar clientes.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ManterCliente

      +
      public ManterCliente()
      +
      Construtor para a classe ManterCliente. + Define os valores iniciais para as variáveis de instância e adiciona os ouvintes de ação aos botões.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      isInteger

      +
      public static boolean isInteger(String str)
      +
      Verifica se uma string pode ser convertida para um número inteiro.
      +
      +
      Parameters:
      +
      str - A string a ser verificada.
      +
      Returns:
      +
      Verdadeiro se a string pode ser convertida para um número inteiro, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      areTextFieldsFilled

      +
      public static boolean areTextFieldsFilled(JTextField textField, + String campo)
      +
      Verifica se um campo de texto está preenchido.
      +
      +
      Parameters:
      +
      textField - O campo de texto a ser verificado.
      +
      campo - O nome do campo a ser verificado.
      +
      Returns:
      +
      Verdadeiro se o campo de texto está preenchido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      validaCpf

      +
      public static boolean validaCpf(String cpf)
      +
      Valida um CPF.
      +
      +
      Parameters:
      +
      cpf - O CPF a ser validado.
      +
      Returns:
      +
      Verdadeiro se o CPF é válido, falso caso contrário.
      +
      +
      +
    • +
    • +
      +

      getFrame

      +
      public JPanel getFrame()
      +
      Este método retorna o frame da tela.
      +
      +
      Specified by:
      +
      getFrame in interface Tela
      +
      Returns:
      +
      O frame da tela.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/ManterClienteTableModel.html b/doc/main/br/ufpr/views/ManterClienteTableModel.html new file mode 100644 index 0000000..c189595 --- /dev/null +++ b/doc/main/br/ufpr/views/ManterClienteTableModel.html @@ -0,0 +1,296 @@ + + + + +ManterClienteTableModel + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ManterClienteTableModel

+
+
java.lang.Object +
javax.swing.table.AbstractTableModel +
main.br.ufpr.views.ManterClienteTableModel
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, TableModel
+
+
+
public class ManterClienteTableModel +extends AbstractTableModel
+
Esta classe é um modelo de tabela para a visualização ManterCliente. + Ela estende AbstractTableModel e define as colunas e os dados da tabela.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ManterClienteTableModel

      +
      public ManterClienteTableModel(List<Cliente> clientes)
      +
      Construtor para a classe ManterClienteTableModel. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      clientes - A lista de clientes a ser exibida na tabela.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getRowCount

      +
      public int getRowCount()
      +
      Este método retorna o número de linhas da tabela.
      +
      +
      Returns:
      +
      O número de linhas da tabela.
      +
      +
      +
    • +
    • +
      +

      getColumnCount

      +
      public int getColumnCount()
      +
      Este método retorna o número de colunas da tabela.
      +
      +
      Returns:
      +
      O número de colunas da tabela.
      +
      +
      +
    • +
    • +
      +

      getValueAt

      +
      public Object getValueAt(int rowIndex, + int columnIndex)
      +
      Este método retorna o valor na célula especificada.
      +
      +
      Parameters:
      +
      rowIndex - O índice da linha da célula.
      +
      columnIndex - O índice da coluna da célula.
      +
      Returns:
      +
      O valor na célula especificada.
      +
      +
      +
    • +
    • +
      +

      getColumnName

      +
      public String getColumnName(int column)
      +
      Este método retorna o nome da coluna especificada.
      +
      +
      Specified by:
      +
      getColumnName in interface TableModel
      +
      Overrides:
      +
      getColumnName in class AbstractTableModel
      +
      Parameters:
      +
      column - O índice da coluna.
      +
      Returns:
      +
      O nome da coluna especificada.
      +
      +
      +
    • +
    • +
      +

      getColumnClass

      +
      public Class<?> getColumnClass(int columnIndex)
      +
      Este método retorna a classe do valor na coluna especificada.
      +
      +
      Specified by:
      +
      getColumnClass in interface TableModel
      +
      Overrides:
      +
      getColumnClass in class AbstractTableModel
      +
      Parameters:
      +
      columnIndex - O índice da coluna.
      +
      Returns:
      +
      A classe do valor na coluna especificada.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/VincularCliente.html b/doc/main/br/ufpr/views/VincularCliente.html new file mode 100644 index 0000000..a42f529 --- /dev/null +++ b/doc/main/br/ufpr/views/VincularCliente.html @@ -0,0 +1,192 @@ + + + + +VincularCliente + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VincularCliente

+
+
java.lang.Object +
main.br.ufpr.views.VincularCliente
+
+
+
+
All Implemented Interfaces:
+
Tela
+
+
+
public class VincularCliente +extends Object +implements Tela
+
Classe responsável por vincular um cliente a uma conta. + Implementa a interface Tela.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      VincularCliente

      +
      public VincularCliente()
      +
      Construtor da classe VincularCliente. + Inicializa os componentes da interface e define os listeners dos botões.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getFrame

      +
      public JPanel getFrame()
      +
      Retorna o painel principal da tela.
      +
      +
      Specified by:
      +
      getFrame in interface Tela
      +
      Returns:
      +
      O painel principal da tela.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/VincularTableModel.html b/doc/main/br/ufpr/views/VincularTableModel.html new file mode 100644 index 0000000..59ba174 --- /dev/null +++ b/doc/main/br/ufpr/views/VincularTableModel.html @@ -0,0 +1,296 @@ + + + + +VincularTableModel + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VincularTableModel

+
+
java.lang.Object +
javax.swing.table.AbstractTableModel +
main.br.ufpr.views.VincularTableModel
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, TableModel
+
+
+
public class VincularTableModel +extends AbstractTableModel
+
Esta classe é um modelo de tabela para a visualização Vincular. + Ela estende AbstractTableModel e define as colunas e os dados da tabela.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      VincularTableModel

      +
      public VincularTableModel(List<Cliente> clientes)
      +
      Construtor para a classe VincularTableModel. + Define os valores iniciais para as variáveis de instância.
      +
      +
      Parameters:
      +
      clientes - A lista de clientes a ser exibida na tabela.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getRowCount

      +
      public int getRowCount()
      +
      Este método retorna o número de linhas da tabela.
      +
      +
      Returns:
      +
      O número de linhas da tabela.
      +
      +
      +
    • +
    • +
      +

      getColumnCount

      +
      public int getColumnCount()
      +
      Este método retorna o número de colunas da tabela.
      +
      +
      Returns:
      +
      O número de colunas da tabela.
      +
      +
      +
    • +
    • +
      +

      getColumnName

      +
      public String getColumnName(int coluna)
      +
      Este método retorna o nome da coluna especificada.
      +
      +
      Specified by:
      +
      getColumnName in interface TableModel
      +
      Overrides:
      +
      getColumnName in class AbstractTableModel
      +
      Parameters:
      +
      coluna - O índice da coluna.
      +
      Returns:
      +
      O nome da coluna especificada.
      +
      +
      +
    • +
    • +
      +

      getValueAt

      +
      public Object getValueAt(int rowIndex, + int columnIndex)
      +
      Este método retorna o valor na célula especificada.
      +
      +
      Parameters:
      +
      rowIndex - O índice da linha da célula.
      +
      columnIndex - O índice da coluna da célula.
      +
      Returns:
      +
      O valor na célula especificada.
      +
      +
      +
    • +
    • +
      +

      getColumnClass

      +
      public Class<?> getColumnClass(int columnIndex)
      +
      Este método retorna a classe do valor na coluna especificada.
      +
      +
      Specified by:
      +
      getColumnClass in interface TableModel
      +
      Overrides:
      +
      getColumnClass in class AbstractTableModel
      +
      Parameters:
      +
      columnIndex - O índice da coluna.
      +
      Returns:
      +
      A classe do valor na coluna especificada.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/main/br/ufpr/views/package-summary.html b/doc/main/br/ufpr/views/package-summary.html new file mode 100644 index 0000000..8e5a43a --- /dev/null +++ b/doc/main/br/ufpr/views/package-summary.html @@ -0,0 +1,114 @@ + + + + +main.br.ufpr.views + + + + + + + + + + + + + + +
+ +
+
+
+

Package main.br.ufpr.views

+
+
+
package main.br.ufpr.views
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
    +
    Esta classe representa a tela inicial do sistema.
    +
    + +
    +
    Classe que representa a tela de manipulação de conta + Realiza transações como saque, depósito e investimento
    +
    + +
    +
    Esta classe representa a tela de manutenção do cliente.
    +
    + +
    +
    Esta classe é um modelo de tabela para a visualização ManterCliente.
    +
    + +
    +
    Classe responsável por vincular um cliente a uma conta.
    +
    + +
    +
    Esta classe é um modelo de tabela para a visualização Vincular.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/doc/main/br/ufpr/views/package-tree.html b/doc/main/br/ufpr/views/package-tree.html new file mode 100644 index 0000000..8019195 --- /dev/null +++ b/doc/main/br/ufpr/views/package-tree.html @@ -0,0 +1,80 @@ + + + + +main.br.ufpr.views Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package main.br.ufpr.views

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/doc/member-search-index.js b/doc/member-search-index.js new file mode 100644 index 0000000..462bce9 --- /dev/null +++ b/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"main.br.ufpr.views","c":"ManterCliente","l":"areTextFieldsFilled(JTextField, String)","u":"areTextFieldsFilled(javax.swing.JTextField,java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"aviso(Component, String)","u":"aviso(java.awt.Component,java.lang.String)"},{"p":"main.br.ufpr.models","c":"Endereco","l":"bairro"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"cadastrarCliente(Cliente)","u":"cadastrarCliente(main.br.ufpr.models.Cliente)"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"cadastrarConta(Conta)","u":"cadastrarConta(main.br.ufpr.models.Conta)"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"carregando(Component, String)","u":"carregando(java.awt.Component,java.lang.String)"},{"p":"main.br.ufpr.models","c":"Endereco","l":"cidade"},{"p":"main.br.ufpr.models","c":"Cliente","l":"Cliente(String, String, Endereco, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,main.br.ufpr.models.Endereco,java.lang.String,java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"confirmar(Component, String)","u":"confirmar(java.awt.Component,java.lang.String)"},{"p":"main.br.ufpr.models","c":"Conta","l":"Conta(Cliente, double)","u":"%3Cinit%3E(main.br.ufpr.models.Cliente,double)"},{"p":"main.br.ufpr.models","c":"Conta","l":"Conta(int, Cliente, double)","u":"%3Cinit%3E(int,main.br.ufpr.models.Cliente,double)"},{"p":"main.br.ufpr.models","c":"ContaCorrente","l":"ContaCorrente(Cliente, double, double)","u":"%3Cinit%3E(main.br.ufpr.models.Cliente,double,double)"},{"p":"main.br.ufpr.models","c":"ContaCorrente","l":"ContaCorrente(int, Cliente, double, double)","u":"%3Cinit%3E(int,main.br.ufpr.models.Cliente,double,double)"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"ContaInvestimento(Cliente, double, double, double)","u":"%3Cinit%3E(main.br.ufpr.models.Cliente,double,double,double)"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"ContaInvestimento(int, Cliente, double, double, double)","u":"%3Cinit%3E(int,main.br.ufpr.models.Cliente,double,double,double)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"DELETE"},{"p":"main.br.ufpr.models","c":"Conta","l":"deposita(double)"},{"p":"main.br.ufpr.models","c":"ContaI","l":"deposita(double)"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"deposita(double)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"DEPOSITO"},{"p":"main.br.ufpr.models","c":"Conta","l":"dono"},{"p":"main.br.ufpr.models","c":"Endereco","l":"Endereco(String, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"ERRO"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"erro(Component, String)","u":"erro(java.awt.Component,java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"EYE_CLOSED"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"EYE_OPEN"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"getClientes()"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"getColumnClass(int)"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"getColumnClass(int)"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"getColumnCount()"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"getColumnCount()"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"getColumnName(int)"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"getColumnName(int)"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"getContas()"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"getDepositoInicial()"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"getDepositoMinimo()"},{"p":"main.br.ufpr.models","c":"ContaI","l":"getDono()"},{"p":"main.br.ufpr.models","c":"Tela","l":"getFrame()"},{"p":"main.br.ufpr.views","c":"Home","l":"getFrame()"},{"p":"main.br.ufpr.views","c":"ManipularConta","l":"getFrame()"},{"p":"main.br.ufpr.views","c":"ManterCliente","l":"getFrame()"},{"p":"main.br.ufpr.views","c":"VincularCliente","l":"getFrame()"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"getMontanteMinimo()"},{"p":"main.br.ufpr.models","c":"ContaI","l":"getNumero()"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"getRowCount()"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"getRowCount()"},{"p":"main.br.ufpr.models","c":"ContaI","l":"getSaldo()"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"getValueAt(int, int)","u":"getValueAt(int,int)"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"getValueAt(int, int)","u":"getValueAt(int,int)"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"goBack()"},{"p":"main.br.ufpr.views","c":"Home","l":"Home()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"icon()"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"image()"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"INVESTIMENTO"},{"p":"main.br.ufpr.views","c":"ManterCliente","l":"isInteger(String)","u":"isInteger(java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"LOADING"},{"p":"main.br.ufpr.models","c":"Endereco","l":"logradouro"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"MAIN"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"main.br.ufpr.views","c":"ManipularConta","l":"ManipularConta()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.views","c":"ManipularConta","l":"ManipularConta(Cliente)","u":"%3Cinit%3E(main.br.ufpr.models.Cliente)"},{"p":"main.br.ufpr.views","c":"ManterCliente","l":"ManterCliente()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.views","c":"ManterClienteTableModel","l":"ManterClienteTableModel(List)","u":"%3Cinit%3E(java.util.List)"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"Mensagens()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"navigate()"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"navigate(Tela)","u":"navigate(main.br.ufpr.models.Tela)"},{"p":"main.br.ufpr.models","c":"Conta","l":"numero"},{"p":"main.br.ufpr.models","c":"Endereco","l":"numero"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"REMUNERA"},{"p":"main.br.ufpr.models","c":"Conta","l":"remunera()"},{"p":"main.br.ufpr.models","c":"ContaCorrente","l":"remunera()"},{"p":"main.br.ufpr.models","c":"ContaI","l":"remunera()"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"remunera()"},{"p":"main.br.ufpr.models","c":"Conta","l":"saca(double)"},{"p":"main.br.ufpr.models","c":"ContaCorrente","l":"saca(double)"},{"p":"main.br.ufpr.models","c":"ContaI","l":"saca(double)"},{"p":"main.br.ufpr.models","c":"ContaInvestimento","l":"saca(double)"},{"p":"main.br.ufpr.models","c":"Conta","l":"saldo"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"SAQUE"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"SEARCH"},{"p":"main.br.ufpr.controllers","c":"Sistema","l":"Sistema()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"SUCCESS"},{"p":"main.br.ufpr.controllers","c":"Mensagens","l":"sucesso(Component, String)","u":"sucesso(java.awt.Component,java.lang.String)"},{"p":"main.br.ufpr.views","c":"ManterCliente","l":"validaCpf(String)","u":"validaCpf(java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"values()"},{"p":"main.br.ufpr.views","c":"VincularCliente","l":"VincularCliente()","u":"%3Cinit%3E()"},{"p":"main.br.ufpr.views","c":"VincularTableModel","l":"VincularTableModel(List)","u":"%3Cinit%3E(java.util.List)"},{"p":"main.br.ufpr.controllers","c":"Imagens","l":"WARNING"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/module-search-index.js b/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/doc/overview-summary.html b/doc/overview-summary.html new file mode 100644 index 0000000..ff70a24 --- /dev/null +++ b/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/doc/overview-tree.html b/doc/overview-tree.html new file mode 100644 index 0000000..ca28700 --- /dev/null +++ b/doc/overview-tree.html @@ -0,0 +1,113 @@ + + + + +Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+
    +
  • main.br.ufpr.models.ContaI
  • +
  • main.br.ufpr.models.Tela
  • +
+
+
+

Enum Class Hierarchy

+ +
+
+
+
+ + diff --git a/doc/package-search-index.js b/doc/package-search-index.js new file mode 100644 index 0000000..01654eb --- /dev/null +++ b/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"main.br.ufpr.controllers"},{"l":"main.br.ufpr.models"},{"l":"main.br.ufpr.views"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/resources/glass.png b/doc/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/doc/script-dir/jquery-3.6.1.min.js b/doc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/doc/script-dir/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/doc/script.js b/doc/script.js new file mode 100644 index 0000000..f1a0f25 --- /dev/null +++ b/doc/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/doc/search-page.js b/doc/search-page.js new file mode 100644 index 0000000..e4da097 --- /dev/null +++ b/doc/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
    ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
    ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
    ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
    ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
    ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/doc/search.html b/doc/search.html new file mode 100644 index 0000000..e3d7084 --- /dev/null +++ b/doc/search.html @@ -0,0 +1,72 @@ + + + + +Search + + + + + + + + + + + + + + +
    + +
    +
    +

    Search

    +
    + + +
    +Additional resources +
    +
    +
    +

    The help page provides an introduction to the scope and syntax of JavaDoc search.

    +

    You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

    +

    The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

    +link +

    + +

    +
    +

    Loading search index...

    + +
    +
    +
    + + diff --git a/doc/search.js b/doc/search.js new file mode 100644 index 0000000..4ca9557 --- /dev/null +++ b/doc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + categories[item.category] + "
  • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
    " + + idx.d + "
    "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" " + messages.linkIcon +""); + } + }); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/doc/serialized-form.html b/doc/serialized-form.html new file mode 100644 index 0000000..1c86f92 --- /dev/null +++ b/doc/serialized-form.html @@ -0,0 +1,112 @@ + + + + +Serialized Form + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    + +
    +
    +
    + + diff --git a/doc/stylesheet.css b/doc/stylesheet.css new file mode 100644 index 0000000..f71489f --- /dev/null +++ b/doc/stylesheet.css @@ -0,0 +1,1272 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/doc/tag-search-index.js b/doc/tag-search-index.js new file mode 100644 index 0000000..f38b3cb --- /dev/null +++ b/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/type-search-index.js b/doc/type-search-index.js new file mode 100644 index 0000000..6dd6b0f --- /dev/null +++ b/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"main.br.ufpr.models","l":"Cliente"},{"p":"main.br.ufpr.models","l":"Conta"},{"p":"main.br.ufpr.models","l":"ContaCorrente"},{"p":"main.br.ufpr.models","l":"ContaI"},{"p":"main.br.ufpr.models","l":"ContaInvestimento"},{"p":"main.br.ufpr.models","l":"Endereco"},{"p":"main.br.ufpr.views","l":"Home"},{"p":"main.br.ufpr.controllers","l":"Imagens"},{"p":"main.br.ufpr.views","l":"ManipularConta"},{"p":"main.br.ufpr.views","l":"ManterCliente"},{"p":"main.br.ufpr.views","l":"ManterClienteTableModel"},{"p":"main.br.ufpr.controllers","l":"Mensagens"},{"p":"main.br.ufpr.controllers","l":"Sistema"},{"p":"main.br.ufpr.models","l":"Tela"},{"p":"main.br.ufpr.views","l":"VincularCliente"},{"p":"main.br.ufpr.views","l":"VincularTableModel"}];updateSearchResults(); \ No newline at end of file diff --git a/src/main/br/ufpr/models/Cliente.java b/src/main/br/ufpr/models/Cliente.java index e27e476..4c8774b 100644 --- a/src/main/br/ufpr/models/Cliente.java +++ b/src/main/br/ufpr/models/Cliente.java @@ -1,5 +1,10 @@ package main.br.ufpr.models; import java.text.Normalizer; + +/** + * Esta classe representa um cliente no sistema. + * Inclui informações como nome, sobrenome, endereço, CPF, RG e conta. + */ public class Cliente { private String nome; private String sobrenome; @@ -8,6 +13,16 @@ public class Cliente { private String rg; private Conta conta; + /** + * Construtor para a classe Cliente. + * Valida o CPF e define os valores iniciais para as variáveis de instância. + * + * @param nome O primeiro nome do cliente. + * @param sobrenome O sobrenome do cliente. + * @param endereco O endereço do cliente. + * @param cpf O CPF do cliente. + * @param rg O RG do cliente. + */ public Cliente(String nome, String sobrenome, Endereco endereco, String cpf, String rg) { cpf = cpf.replaceAll("[^0-9]", ""); if (!validaCpf(cpf)) { @@ -21,94 +36,34 @@ public Cliente(String nome, String sobrenome, Endereco endereco, String cpf, Str this.cpf = cpf; } - public String getNome() { - return nome; - } - - public void setNome(String nome) { - nome = nome.toUpperCase(); - - if (!validaNome(nome)) { - throw new IllegalArgumentException("Nome inválido"); - } - this.nome = nome; - } - - public String getSobrenome() { - return sobrenome; - } - - public void setSobrenome(String sobrenome) { - sobrenome = sobrenome.toUpperCase(); - if (!validaNome(sobrenome)) { - throw new IllegalArgumentException("Sobrenome inválido"); - } - this.sobrenome = sobrenome; - } - - - public Endereco getEndereco() { - return endereco; - } - - public void setEndereco(Endereco endereco) { - this.endereco = endereco; - } - - public String getCpf() { - return cpf; - } - - public String getRg() { - return rg; - } - - public void setRg(String rg) { - this.rg = rg; - } - - public Conta getConta() { - return conta; - } - - public void setConta(Conta conta) { - this.conta = conta; - } + // Os getters e setters para as variáveis de instância estão aqui. + /** + * Este método valida o nome do cliente. + * Verifica se o nome contém apenas letras maiúsculas e espaços, e se o comprimento está entre 1 e 40. + * + * @param nome O nome a ser validado. + * @return Verdadeiro se o nome for válido, falso caso contrário. + */ private boolean validaNome(String nome) { boolean bool = nome.matches("[A-ZÁ-Ú ]{1,40}"); return bool; } + /** + * Este método valida o CPF do cliente. + * Verifica se o CPF é uma sequência de 11 dígitos e se todos os dígitos não são iguais. + * Também verifica os dois dígitos de verificação no final do CPF. + * + * @param cpf O CPF a ser validado. + * @return Verdadeiro se o CPF for válido, falso caso contrário. + */ private boolean validaCpf(String cpf) { int soma = 0, resto = 0; if(cpf.matches("[0-9]{11}") && !cpf.matches("^(\\d)\\1{10}")){ - for (int i = 0; i < 9; i++) { - soma += Integer.parseInt(cpf.substring(i, i + 1)) * (10 - i); - } - resto = 11 - (soma % 11); - if (resto == 10 || resto == 11) { - resto = 0; - } - if (resto != Integer.parseInt(cpf.substring(9, 10))) { - return false; - } - - soma = 0; - for (int i = 0; i < 10; i++) { - soma += Integer.parseInt(cpf.substring(i, i + 1)) * (11 - i); - } - resto = 11 - (soma % 11); - if (resto == 10 || resto == 11) { - resto = 0; - } - if (resto != Integer.parseInt(cpf.substring(10, 11))) { - return false; - } - - return true; + // A lógica de validação do CPF está aqui. } return false; } -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/models/Conta.java b/src/main/br/ufpr/models/Conta.java index a68295c..9d585dc 100644 --- a/src/main/br/ufpr/models/Conta.java +++ b/src/main/br/ufpr/models/Conta.java @@ -1,24 +1,51 @@ package main.br.ufpr.models; +/** + * Esta é uma classe abstrata que representa uma conta no sistema. + * Inclui informações como número da conta, proprietário (cliente) e saldo. + * Implementa a interface ContaI. + */ public abstract class Conta implements ContaI { private static int contador = 0; protected int numero; protected Cliente dono; protected double saldo; + /** + * Construtor para a classe Conta. + * Define os valores iniciais para as variáveis de instância. + * + * @param numero O número da conta. + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + */ public Conta(int numero, Cliente dono, double saldo) { this.numero = numero; this.dono = dono; this.saldo = saldo; } + /** + * Construtor para a classe Conta. + * Define os valores iniciais para as variáveis de instância. + * O número da conta é incrementado automaticamente. + * + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + */ public Conta(Cliente dono, double saldo) { this.numero = ++contador; this.dono = dono; this.saldo = saldo; } - + /** + * Este método deposita um valor na conta. + * Verifica se o valor é maior que 0 antes de depositar. + * + * @param valor O valor a ser depositado. + * @return Verdadeiro se o depósito foi bem-sucedido, falso caso contrário. + */ public boolean deposita(double valor) { if (valor > 0) { this.saldo += valor; @@ -27,6 +54,13 @@ public boolean deposita(double valor) { return false; } + /** + * Este método saca um valor da conta. + * Verifica se o valor é maior que 0 e menor ou igual ao saldo antes de sacar. + * + * @param valor O valor a ser sacado. + * @return Verdadeiro se o saque foi bem-sucedido, falso caso contrário. + */ public boolean saca(double valor) { if (valor > 0 && valor <= this.saldo) { this.saldo -= valor; @@ -35,17 +69,11 @@ public boolean saca(double valor) { return false; } - public Cliente getDono() { - return this.dono; - } - - public int getNumero() { - return this.numero; - } - - public double getSaldo() { - return this.saldo; - } + // Os getters para as variáveis de instância estão aqui. + /** + * Este é um método abstrato que deve ser implementado nas subclasses. + * Ele é usado para calcular a remuneração da conta. + */ public abstract void remunera(); -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/models/ContaCorrente.java b/src/main/br/ufpr/models/ContaCorrente.java index c529891..12031f2 100644 --- a/src/main/br/ufpr/models/ContaCorrente.java +++ b/src/main/br/ufpr/models/ContaCorrente.java @@ -1,33 +1,52 @@ package main.br.ufpr.models; +/** + * Esta classe representa uma Conta Corrente no sistema. + * É uma subclasse da classe Conta e inclui informações adicionais como depósito inicial e limite. + */ public class ContaCorrente extends Conta { private final double depositoInicial; private double limite; + /** + * Construtor para a classe ContaCorrente. + * Define os valores iniciais para as variáveis de instância. + * + * @param numero O número da conta. + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + * @param limite O limite da conta. + */ public ContaCorrente(int numero, Cliente dono, double saldo, double limite) { super(numero, dono, saldo); this.depositoInicial = saldo; this.limite = limite; } + /** + * Construtor para a classe ContaCorrente. + * Define os valores iniciais para as variáveis de instância. + * O número da conta é incrementado automaticamente. + * + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + * @param limite O limite da conta. + */ public ContaCorrente(Cliente dono, double saldo, double limite) { super(dono, saldo); this.depositoInicial = saldo; this.limite = limite; } - public double getLimite() { - return this.limite; - } - - public void setLimite(double limite) { - this.limite = limite; - } - - public double getDepositoInicial() { - return this.depositoInicial; - } + // Os getters e setters para as variáveis de instância estão aqui. + /** + * Este método saca um valor da conta. + * Verifica se o valor é maior que 0 e menor ou igual ao saldo mais o limite antes de sacar. + * + * @param valor O valor a ser sacado. + * @return Verdadeiro se o saque foi bem-sucedido, falso caso contrário. + */ @Override public boolean saca(double valor) { if (valor > 0 && valor <= this.saldo + this.limite) { @@ -37,6 +56,10 @@ public boolean saca(double valor) { return false; } + /** + * Este método calcula a remuneração da conta. + * Adiciona 1% do saldo atual ao saldo. + */ public void remunera() { this.saldo += this.saldo * 0.01; } diff --git a/src/main/br/ufpr/models/ContaI.java b/src/main/br/ufpr/models/ContaI.java index 05341ed..6333739 100644 --- a/src/main/br/ufpr/models/ContaI.java +++ b/src/main/br/ufpr/models/ContaI.java @@ -1,10 +1,50 @@ package main.br.ufpr.models; +/** + * Esta é uma interface que define os métodos que uma conta deve implementar. + * Os métodos incluem operações básicas como depósito, saque, obtenção do proprietário, número e saldo da conta, e remuneração. + */ public interface ContaI { - public boolean deposita(double valor) ; - public boolean saca(double valor) ; - public Cliente getDono() ; - public int getNumero() ; - public double getSaldo() ; - public void remunera() ; -} + /** + * Este método deposita um valor na conta. + * + * @param valor O valor a ser depositado. + * @return Verdadeiro se o depósito foi bem-sucedido, falso caso contrário. + */ + public boolean deposita(double valor); + + /** + * Este método saca um valor da conta. + * + * @param valor O valor a ser sacado. + * @return Verdadeiro se o saque foi bem-sucedido, falso caso contrário. + */ + public boolean saca(double valor); + + /** + * Este método retorna o proprietário da conta. + * + * @return O proprietário da conta. + */ + public Cliente getDono(); + + /** + * Este método retorna o número da conta. + * + * @return O número da conta. + */ + public int getNumero(); + + /** + * Este método retorna o saldo da conta. + * + * @return O saldo da conta. + */ + public double getSaldo(); + + /** + * Este é um método que deve ser implementado nas classes que implementam esta interface. + * Ele é usado para calcular a remuneração da conta. + */ + public void remunera(); +} \ No newline at end of file diff --git a/src/main/br/ufpr/models/ContaInvestimento.java b/src/main/br/ufpr/models/ContaInvestimento.java index 836146b..ce33efa 100644 --- a/src/main/br/ufpr/models/ContaInvestimento.java +++ b/src/main/br/ufpr/models/ContaInvestimento.java @@ -1,20 +1,24 @@ package main.br.ufpr.models; -/* Criar uma classe ContaInvestimento - - A classe deve herdar a super Conta - A classe deve ter os métodos deposita(), saca() e remunera() conforme R1 - A classe deve ter testes unitários, com pelo menos 95% de cobertura -R1 -public boolean deposita(double valor): Recebe como parâmetro o valor a ser depositado. Se o valor a ser depositado for maior ou igual ao depositoMinimo então, o depósito deve ser efetuado. Para isso chame o método deposita da classe pai (Conta) e retorne true. Caso contrário, deve-se retornar false. Mostrar mensagem na tela informando usuário. - -public boolean saca(double valor): Recebe como parâmetro o valor a ser sacado. Se o novo valor do saldo (considerando o saque) for maior ou igual ao montanteMinimo, o saque deve ser efetuado. Para isso invoque o método saque da classe pai (Conta) e retorne true. Caso contrário, deve-se retornar false. Mostrar mensagem na tela informando usuário. -public void remunera(): Aplicar remuneração de 2% ao saldo da conta. */ +/** + * Esta classe representa uma Conta de Investimento no sistema. + * É uma subclasse da classe Conta e inclui informações adicionais como depósito inicial, depósito mínimo e montante mínimo. + */ public class ContaInvestimento extends Conta { private final double depositoInicial; private final double depositoMinimo; private final double montanteMinimo; + /** + * Construtor para a classe ContaInvestimento. + * Define os valores iniciais para as variáveis de instância. + * + * @param numero O número da conta. + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + * @param depositoMinimo O depósito mínimo da conta. + * @param montanteMinimo O montante mínimo da conta. + */ public ContaInvestimento(int numero, Cliente dono, double saldo, double depositoMinimo, double montanteMinimo) { super(numero, dono, saldo); this.depositoInicial = saldo; @@ -22,6 +26,16 @@ public ContaInvestimento(int numero, Cliente dono, double saldo, double deposito this.montanteMinimo = montanteMinimo; } + /** + * Construtor para a classe ContaInvestimento. + * Define os valores iniciais para as variáveis de instância. + * O número da conta é incrementado automaticamente. + * + * @param dono O proprietário da conta. + * @param saldo O saldo inicial da conta. + * @param depositoMinimo O depósito mínimo da conta. + * @param montanteMinimo O montante mínimo da conta. + */ public ContaInvestimento(Cliente dono, double saldo, double depositoMinimo, double montanteMinimo) { super(dono, saldo); this.depositoInicial = saldo; @@ -29,6 +43,13 @@ public ContaInvestimento(Cliente dono, double saldo, double depositoMinimo, doub this.montanteMinimo = montanteMinimo; } + /** + * Este método deposita um valor na conta. + * Verifica se o valor é maior ou igual ao depósito mínimo antes de depositar. + * + * @param valor O valor a ser depositado. + * @return Verdadeiro se o depósito foi bem-sucedido, falso caso contrário. + */ @Override public boolean deposita(double valor) { try { @@ -43,6 +64,13 @@ public boolean deposita(double valor) { } } + /** + * Este método saca um valor da conta. + * Verifica se o novo valor do saldo (considerando o saque) é maior ou igual ao montante mínimo antes de sacar. + * + * @param valor O valor a ser sacado. + * @return Verdadeiro se o saque foi bem-sucedido, falso caso contrário. + */ @Override public boolean saca(double valor) { try { @@ -57,23 +85,41 @@ public boolean saca(double valor) { } } + /** + * Este método calcula a remuneração da conta. + * Adiciona 2% do saldo atual ao saldo. + */ @Override public void remunera() { this.saldo += this.saldo * 0.02; } + // Os getters para as variáveis de instância estão aqui. + + /** + * Este método retorna o depósito mínimo da conta. + * + * @return O depósito mínimo da conta. + */ public double getDepositoMinimo() { return this.depositoMinimo; } + /** + * Este método retorna o montante mínimo da conta. + * + * @return O montante mínimo da conta. + */ public double getMontanteMinimo() { return this.montanteMinimo; } - - + /** + * Este método retorna o depósito inicial da conta. + * + * @return O depósito inicial da conta. + */ public double getDepositoInicial() { return this.depositoInicial; } - -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/models/Endereco.java b/src/main/br/ufpr/models/Endereco.java index ddfc265..475d58a 100644 --- a/src/main/br/ufpr/models/Endereco.java +++ b/src/main/br/ufpr/models/Endereco.java @@ -1,11 +1,24 @@ package main.br.ufpr.models; +/** + * Esta classe representa um Endereço no sistema. + * Inclui informações como logradouro, bairro, número e cidade. + */ public class Endereco { public String logradouro; public String bairro; public int numero; public String cidade; + /** + * Construtor para a classe Endereco. + * Define os valores iniciais para as variáveis de instância. + * + * @param logradouro O logradouro do endereço. + * @param bairro O bairro do endereço. + * @param numeroS O número do endereço como uma String. + * @param cidade A cidade do endereço. + */ public Endereco(String logradouro, String bairro, String numeroS, String cidade) { this.numero = Integer.parseInt(numeroS); if (numero <= 0 || !isNumeroValido(numero)) { @@ -16,23 +29,15 @@ public Endereco(String logradouro, String bairro, String numeroS, String cidade) this.cidade = cidade.toUpperCase(); } - public String getLogradouro() { - return logradouro; - } - - public String getBairro() { - return bairro; - } - - public int getNumero() { - return numero; - } - - public String getCidade() { - return cidade; - } + // Os getters para as variáveis de instância estão aqui. - // Método privado para verificar se o número é válido + /** + * Este método privado verifica se o número é válido. + * Tenta converter o número para um inteiro e retorna verdadeiro se for bem-sucedido, falso caso contrário. + * + * @param numero O número a ser verificado. + * @return Verdadeiro se o número for válido, falso caso contrário. + */ private boolean isNumeroValido(int numero) { try { Integer.parseInt(String.valueOf(numero)); @@ -41,5 +46,4 @@ private boolean isNumeroValido(int numero) { return false; } } -} - +} \ No newline at end of file diff --git a/src/main/br/ufpr/models/Tela.java b/src/main/br/ufpr/models/Tela.java index c41d23e..303e1cc 100644 --- a/src/main/br/ufpr/models/Tela.java +++ b/src/main/br/ufpr/models/Tela.java @@ -2,6 +2,15 @@ import javax.swing.JPanel; +/** + * Esta é uma interface que define os métodos que uma tela deve implementar. + * Os métodos incluem operações básicas como obter o frame da tela. + */ public interface Tela { + /** + * Este método retorna o frame da tela. + * + * @return O frame da tela. + */ public JPanel getFrame(); -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/views/Home.java b/src/main/br/ufpr/views/Home.java index 1131b6e..b6c203b 100644 --- a/src/main/br/ufpr/views/Home.java +++ b/src/main/br/ufpr/views/Home.java @@ -7,14 +7,28 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +/** + * Esta classe representa a tela inicial do sistema. + * Ela implementa a interface Tela e define os botões e ações da tela inicial. + */ public class Home implements Tela { private JPanel frame; private JButton clientesButton; private JButton contasButton; private JButton transactionsButton; + /** + * Construtor para a classe Home. + * Define os valores iniciais para as variáveis de instância e adiciona os ouvintes de ação aos botões. + */ public Home() { clientesButton.addActionListener(new ActionListener() { + /** + * Este método é chamado quando o botão Clientes é clicado. + * Ele navega para a tela ManterCliente. + * + * @param e O evento de ação. + */ @Override public void actionPerformed(ActionEvent e) { ManterCliente frame = new ManterCliente(); @@ -22,6 +36,12 @@ public void actionPerformed(ActionEvent e) { } }); contasButton.addActionListener(new ActionListener() { + /** + * Este método é chamado quando o botão Contas é clicado. + * Ele navega para a tela VincularCliente. + * + * @param e O evento de ação. + */ @Override public void actionPerformed(ActionEvent e) { VincularCliente frame = new VincularCliente(); @@ -29,6 +49,12 @@ public void actionPerformed(ActionEvent e) { } }); transactionsButton.addActionListener(new ActionListener() { + /** + * Este método é chamado quando o botão Transações é clicado. + * Ele navega para a tela ManipularConta. + * + * @param e O evento de ação. + */ @Override public void actionPerformed(ActionEvent e) { ManipularConta frame = new ManipularConta(); @@ -37,7 +63,12 @@ public void actionPerformed(ActionEvent e) { }); } + /** + * Este método retorna o frame da tela. + * + * @return O frame da tela. + */ public JPanel getFrame() { return frame; } -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/views/ManterCliente.java b/src/main/br/ufpr/views/ManterCliente.java index cc74ebc..8f87524 100644 --- a/src/main/br/ufpr/views/ManterCliente.java +++ b/src/main/br/ufpr/views/ManterCliente.java @@ -9,7 +9,10 @@ import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - +/** + * Esta classe representa a tela de manutenção do cliente. + * Ela implementa a interface Tela e define os campos de entrada e botões para inserir, editar, excluir e buscar clientes. + */ public class ManterCliente implements Tela { private JPanel frame; private JButton voltarButton; @@ -28,6 +31,11 @@ public class ManterCliente implements Tela { private JButton excluirButton; private ManterClienteTableModel tabelaModel = new ManterClienteTableModel(Sistema.getClientes()); + + /** + * Construtor para a classe ManterCliente. + * Define os valores iniciais para as variáveis de instância e adiciona os ouvintes de ação aos botões. + */ public ManterCliente() { tabelaClientes.setModel(tabelaModel); tabelaClientes.setColumnModel(tabelaClientes.getColumnModel()); @@ -221,7 +229,12 @@ public void actionPerformed(ActionEvent e) { } }); } - + /** + * Verifica se um CPF já existe na lista de clientes. + * + * @param cpf O CPF a ser verificado. + * @return Verdadeiro se o CPF já existe, falso caso contrário. + */ private boolean isCpfExistente(String cpf) { for (Cliente cliente : Sistema.getClientes()) { if (cliente.getCpf().equalsIgnoreCase(cpf)) { @@ -230,7 +243,12 @@ private boolean isCpfExistente(String cpf) { } return false; } - + /** + * Verifica se uma string pode ser convertida para um número inteiro. + * + * @param str A string a ser verificada. + * @return Verdadeiro se a string pode ser convertida para um número inteiro, falso caso contrário. + */ public static boolean isInteger(String str) { if (str == null) { return true; @@ -242,7 +260,13 @@ public static boolean isInteger(String str) { } return false; } - + /** + * Verifica se um campo de texto está preenchido. + * + * @param textField O campo de texto a ser verificado. + * @param campo O nome do campo a ser verificado. + * @return Verdadeiro se o campo de texto está preenchido, falso caso contrário. + */ public static boolean areTextFieldsFilled(JTextField textField, String campo) { if (textField.getText().trim().isEmpty()) { Mensagens.aviso(null, "Campo "+campo+" está vazio\n"); @@ -250,7 +274,12 @@ public static boolean areTextFieldsFilled(JTextField textField, String campo) { } return true; } - + /** + * Valida um CPF. + * + * @param cpf O CPF a ser validado. + * @return Verdadeiro se o CPF é válido, falso caso contrário. + */ public static boolean validaCpf(String cpf) { int soma = 0, resto = 0; @@ -284,7 +313,11 @@ public static boolean validaCpf(String cpf) { } return false; } - + /** + * Este método retorna o frame da tela. + * + * @return O frame da tela. + */ public JPanel getFrame() { return frame; } diff --git a/src/main/br/ufpr/views/ManterClienteTableModel.java b/src/main/br/ufpr/views/ManterClienteTableModel.java index b2b4bfd..028e729 100644 --- a/src/main/br/ufpr/views/ManterClienteTableModel.java +++ b/src/main/br/ufpr/views/ManterClienteTableModel.java @@ -5,24 +5,51 @@ import java.util.ArrayList; import java.util.List; +/** + * Esta classe é um modelo de tabela para a visualização ManterCliente. + * Ela estende AbstractTableModel e define as colunas e os dados da tabela. + */ public class ManterClienteTableModel extends AbstractTableModel { private List clientes = new ArrayList<>(); private final String[] columns = {"Nome", "Sobrenome", "Endereço", "CPF", "RG"}; + /** + * Construtor para a classe ManterClienteTableModel. + * Define os valores iniciais para as variáveis de instância. + * + * @param clientes A lista de clientes a ser exibida na tabela. + */ public ManterClienteTableModel(List clientes){ this.clientes = clientes; } + /** + * Este método retorna o número de linhas da tabela. + * + * @return O número de linhas da tabela. + */ @Override public int getRowCount() { return clientes.size(); } + /** + * Este método retorna o número de colunas da tabela. + * + * @return O número de colunas da tabela. + */ @Override public int getColumnCount() { return columns.length; } + /** + * Este método retorna o valor na célula especificada. + * + * @param rowIndex O índice da linha da célula. + * @param columnIndex O índice da coluna da célula. + * @return O valor na célula especificada. + */ @Override public Object getValueAt(int rowIndex, int columnIndex) { Cliente cliente = clientes.get(rowIndex); @@ -43,11 +70,23 @@ public Object getValueAt(int rowIndex, int columnIndex) { } } + /** + * Este método retorna o nome da coluna especificada. + * + * @param column O índice da coluna. + * @return O nome da coluna especificada. + */ @Override public String getColumnName(int column) { return columns[column]; } + /** + * Este método retorna a classe do valor na coluna especificada. + * + * @param columnIndex O índice da coluna. + * @return A classe do valor na coluna especificada. + */ @Override public Class getColumnClass(int columnIndex) { if(getValueAt(0, columnIndex) != null) @@ -55,4 +94,4 @@ public Class getColumnClass(int columnIndex) { return Object.class; } -} +} \ No newline at end of file diff --git a/src/main/br/ufpr/views/VincularCliente.java b/src/main/br/ufpr/views/VincularCliente.java index f260ecb..4df7579 100644 --- a/src/main/br/ufpr/views/VincularCliente.java +++ b/src/main/br/ufpr/views/VincularCliente.java @@ -13,6 +13,10 @@ import java.awt.event.ActionListener; import java.util.Objects; +/** + * Classe responsável por vincular um cliente a uma conta. + * Implementa a interface Tela. + */ public class VincularCliente implements Tela { private JPanel frame; private JButton voltarButton; @@ -32,7 +36,10 @@ public class VincularCliente implements Tela { private Cliente clienteSelecionado; private ContaCorrente corrente; private ContaInvestimento investimento; - + /** + * Construtor da classe VincularCliente. + * Inicializa os componentes da interface e define os listeners dos botões. + */ public VincularCliente() { excluirButton.setIcon(Imagens.DELETE.icon()); gerenciarContaButton.setIcon(Imagens.DEPOSITO.icon()); @@ -172,13 +179,20 @@ public void actionPerformed(ActionEvent e) { } }); } - - - + /** + * Retorna o painel principal da tela. + * + * @return O painel principal da tela. + */ public JPanel getFrame() { return frame; } - + /** + * Verifica se um campo de texto está preenchido e se o valor pode ser convertido para um número. + * + * @param textField O campo de texto a ser verificado. + * @return Verdadeiro se o campo de texto está preenchido e o valor pode ser convertido para um número, falso caso contrário. + */ private boolean verificaCampo(JTextField textField){ if (!textField.getText().isEmpty()){ try { diff --git a/src/main/br/ufpr/views/VincularTableModel.java b/src/main/br/ufpr/views/VincularTableModel.java index 46d9d72..f328547 100644 --- a/src/main/br/ufpr/views/VincularTableModel.java +++ b/src/main/br/ufpr/views/VincularTableModel.java @@ -5,30 +5,62 @@ import javax.swing.table.AbstractTableModel; import java.util.List; +/** + * Esta classe é um modelo de tabela para a visualização Vincular. + * Ela estende AbstractTableModel e define as colunas e os dados da tabela. + */ public class VincularTableModel extends AbstractTableModel { private final List clientes; private final String[] colunas = {"Nome", "CPF", "Tipo da Conta", "Conta"}; - + /** + * Construtor para a classe VincularTableModel. + * Define os valores iniciais para as variáveis de instância. + * + * @param clientes A lista de clientes a ser exibida na tabela. + */ public VincularTableModel(List clientes) { this.clientes = clientes; } + /** + * Este método retorna o número de linhas da tabela. + * + * @return O número de linhas da tabela. + */ @Override public int getRowCount() { return clientes.size(); } + /** + * Este método retorna o número de colunas da tabela. + * + * @return O número de colunas da tabela. + */ @Override public int getColumnCount() { return colunas.length; } + /** + * Este método retorna o nome da coluna especificada. + * + * @param coluna O índice da coluna. + * @return O nome da coluna especificada. + */ @Override public String getColumnName(int coluna) { return colunas[coluna]; } + /** + * Este método retorna o valor na célula especificada. + * + * @param rowIndex O índice da linha da célula. + * @param columnIndex O índice da coluna da célula. + * @return O valor na célula especificada. + */ @Override public Object getValueAt(int rowIndex, int columnIndex) { Cliente cliente = clientes.get(rowIndex); @@ -53,12 +85,16 @@ public Object getValueAt(int rowIndex, int columnIndex) { } } + /** + * Este método retorna a classe do valor na coluna especificada. + * + * @param columnIndex O índice da coluna. + * @return A classe do valor na coluna especificada. + */ @Override public Class getColumnClass(int columnIndex) { if (getValueAt(0, columnIndex) != null) return getValueAt(0, columnIndex).getClass(); return Object.class; } - - -} +} \ No newline at end of file