Thanks to visit codestin.com
Credit goes to github.com

Skip to content

BarbosaJackson/iFace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 

History

15 Commits
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

iFace

Funcionalidades

Criar usuƔrio

Ao iniciar o sistema serÔ exibido para o usuÔrio uma tela de login, nela existe um botão para a criação de um novo usuÔrio, quando o usuÔrio clicar nesse botão serÔ apresentado a ele uma tela de cadastro para que sejam digitados o seu nome (posteriormente editÔvel), seu nome de usuÔrio e sua senha (estes fixos aquela conta), após todos os campos serem preenchidos e o botão "Confirmar" ser clicado um novo usuÔrio é adicionado a base de dados (para este projeto salva numa lista).

Acessar um usuƔrio

Após o login serÔ apresentada ao usuÔrio uma janela com as informações da sua conta - quem são seus amigos, de quais comunidades ele participa, além de um menu onde através dele o usuÔrio pode editar suas informaçõs, adicionar novos dados, adicionar amigos, enviar mensagens, entre outras funcionalidades que vão ser explicadas abaixo, em outras palavras esta janela é a janela base de navegação no sistema.

Abaixo segue uma imagem com um exemplo desta tela imgAccount

ConfiguraƧƵes de perfil

O primeiro botão do menu é o botão de configuração do perfil, ao clicar nele vão ser exibidos outros dois botões que são usudos para adicionar as informações ao seu perfil e para adicionar novas informações ao seu perfil, respectivamente, veja abaixo este "submenu".

imgSubMenuPerfil

Adicionar informaƧƵes ao seu perfil

Para adicionar uma nova informação ao seu perfil basta clicar no botão config. perfil e depois clicar no botão adicionar caracteristica, feito isso você serÔ redirecionado para uma janela pedindo o titulo da informação que você deseja adicionar (idade, status de relacionamento, formação, etc.), após isso, outra janela aparecerÔ solicitando que você digite a descrição da informação anteriormente citada, quando os dois forem digitados e confirmados pelo usuÔrio serÔ adicionado as suas informações.

Editar informaƧƵes do perfil

Ao clicar no botão de edição de informações do perfil você serÔ redirecionado a uma janela com seu nome de usuario (este, inalterÔvel), e com todas as suas outras informações - como nome (por padrão), idade, onde trabalha, entre outras coisas. Para editar alguma informação, basta clicar na caixa de texto com o valor atual, alterar para o novo valor e clicar em confirmar e a informação serÔ atualizada no seu perfil. Veja abaixo um exemplo de tela.

imgEditProfile

Adicionar um amigo ou uma comunidade

Para adicionar um amigo ou ingressar em uma comunidade você vai clicar no botão adicionar amigo/Comunidade e digitar o nome do amigo ou da comunidade que você deseja adicionar ou ser inserido, feito isso, o sistema vai realizar uma busca e a partir disso cinco coisas podem acontecer

  • O usuĆ”rio correspondente ser encontrado, com isso, uma notificação Ć© enviada ao usuĆ”rio.
  • Este usuĆ”rio jĆ” ter enviado uma solitação de amizade para vocĆŖ, neste caso vocĆŖ serĆ” notificado disso eir nas notificaƧƵes aceitar o usuĆ”rio para ser adicionado.
  • VocĆŖ jĆ” ser amigo do usuĆ”rio.
  • Ser uma comunidade, neste caso, vocĆŖ Ć© inserido como membro desta comunidade
  • Ser uma comunidade e vocĆŖ jĆ” estar inserido nela.
  • O nome buscado nĆ£o ser encontrado.

Enviar uma mensagem para um amigo ou uma comunidade

Ao selecionar esta opção no menu a esquerda serÔ aberta uma janela com a sua lista de amigos e comunidades em uma caixa de seleção e um campo de texto para que você digite a mensagem que deseja enviar (Veja abaixo uma imagem desta tela).

imgSendMessage

Criar comunidade

Para criar uma comunidade você deve clicar no botão criar comunidade, feito isso uma janela vai abrir e solicitar o nome da comunidade e uma breve descrição desta.

imgCreateCommunity

Acessar as informaƧƵes de perfil de um usuƔrio ou de uma comunidade

Ao clicar no botão ver perfil serÔ aberta uma janela que vai solicitar o nome de usuÔrio ou o nome da comunidade, após este ser digitado e confirmado pelo usuÔrio, o iFace faz uma busca em sua base de dados e, em caso de encontrar uma correspondencia (vale lembrar que o nome de usuÔrio e o nome da comunidade é único e inalterÔvel) ele exibirÔ uma janela com essas informações, veja abaixo um exemplo:

showProfile

ver seus amigos, suas comunidades ou suas mensagens

No centro inferior da janela inicial é exibido um painel sob dois botões, são eles: amigos e mensagens.

Ao clicar em amigos o painel Ʃ atualizado e nele Ʃ carregado o nome de usuƔrio e o nome de todos os seus amigos, assim, como, todas as comunidades.

showFriends

Ao clicar em mensagens o painel é atualizado e nele são exibidas todas as suas mensagens enviadas e recebidas (inclusive as mensagens que você recebeu através das comunidades que participa).

showMessages

NotificaƧƵes de amizade

No canto superior direito hÔ um botão relativo as notificações, sempre que houver notificações de amizade o sino tem uma imagem indicando que ele estÔ tocando, quando não houver notificações não respondidas, um sino parado.

Deletar conta

Por fim, a função de deletar sua conta, ao fazer isso tudo relacionado a você, para fazer isso, é percorrida sua lista de amigos e exclui você da lista de amigos deles, feito isso, algo similar acontece nas notificações, mas é removido da lista de notificações, depois disso, são buscadas as comunidades que você participa e é dono se só existir você ela é apagada, caso contrario é passada a posse dela para algum outro membro, em seguida são apagas as mensagens enviadas por você e para você, e, por fim, sua conta é removida do banco de dados do sistema.

Classes

Community

  • Motivação: Definir o que Ć© uma comunidade para o sistema
  • Solução: Com isso Ć© possivel ter dados compartilhados globalmente com todos os usuĆ”rio atravĆ©s de uma lista de comunidades
  • Vantagem: Com ela Ć© possĆ­vel agrupar todas as informaƧƵes de uma comunidade

Message

  • Motivação: Definir o que seria a messagem no sistema
  • Solução: agrupar em um mesmo objeto quem enviou, o que enviou e para quem enviou
  • Vantagem: Ter todos os dados agrupados em um só objeto, permitindo assim que apenas os os usuĆ”rios relacionados a mensagem tenham acesso a ela
  • Desvantagem: Informação duplicada, pois, a mesma mensagem Ć© salva no usuĆ”rio que enviou e no usuĆ”rio que recebeu a mensagem.

User

  • Motivação: Agrupar todas as informaƧƵes que cabem no usuĆ”rio em relação as especificaƧƵes sistema
  • Solução: criar um usuĆ”rio e dar a ele acesso as suas informaƧƵes
  • Vantagem: Poder ter uma lista de usuĆ”rios global compartilhada para todos os usuĆ”rios.
  • Desvantagem: Informação duplicada, para formar a lista de amigos e de notificaƧƵes de amizade Ć© salvo todo o objeto do outro usuĆ”rio em duas novas listas alĆ©m da lista global.

JButtonUTILS

  • Motivação: Criar uma classe que tenha os padrƵes de configuração de botƵes
  • Solução: Eliminar a duplicação de trechos de código para configurar um botĆ£o
  • Vantagem: eliminar a duplicação de código

Pair

  • Motivação: Criar um objeto que possa agrupar informaƧƵes em pares para salvar os novos detalhes de cada usuĆ”rio (tendo na chave e valor o titulo e a descrição da caracteristica)
  • Solução: Criar um objeto que agrupe informaƧƵes em pares
  • Vantagem: Quando a relação direta entre os objetos (como no caso de titulo e descrição) Ć© interessante que os dois sejam salvos juntos, para evitar a chance de ter um chaveamento errado e relacionar o que deveria ser uma chave com o valor errado

UTILS

  • Motivação: Ter agrupado os dados gerais do sistema, como o URL base das imagens, as cores utilizadas no fundo e nas fontes, alĆ©m da estilização do texto.
  • Solução: Uma classe com constantes que tenham esses valores estaticos.
  • Vantagem: Se for necessĆ”rio alterar a paleta de cores ou o caminho onde as imagens estĆ£o, basta alterar a sua constante e serĆ” atualizado para todo o sistema.

ViewAPI

  • Motivação: Evitar a duplicação de código na configuração do sistema
  • Solução: Criar uma classe que faƧa essas configuraƧƵes de maneira geral e, ao passar os componentes que ela
  • Vantagem: redução na duplicação e na quantidade de código escrito, visto que em seus mĆ©todos sĆ£o recebidos arrays e, por conta disso, Ć© possivel percorrer os componentes com um for e aplicar a eles certa configuração

Account

  • Motivação: Ter uma janela que agrupe as funcionalidades do usuĆ”rio
  • Solução: Criar uma classe que crie as funcionalidades
  • Vantagem: Ter em um só lugar toda a navegação do usuĆ”rio pós login

addCommunity

  • Motivação: Ter uma janela que faƧa o cadastro de uma nova comunidade
  • Solução: Criar uma janela com os dados de uma nova comunidade
  • Vantagem: Ter uma forma interativa de adicionar uma nova comunidade

DetailUser

  • Motivação: exibir de os detalhes do usuĆ”rio de forma interativa e amigavel
  • Solução: Criar uma janela que exiba de forma amigavel as informaƧƵes do usuĆ”rio
  • Vantagem: Ɖ mais atrativo para o usuĆ”rio ter os dados exibidos em uma janela do que no terminal

EditProfile

  • Motivação: editar os dados de um usuĆ”rio
  • Solução: Criar uma janela que receba os dados atuais e permita a atualização
  • Vantagem: Ɖ mais atrativo ao usuĆ”rio comum utilizar uma janela
  • Desvantagem: demanda mais código

Login

  • Motivação: ter como o usuĆ”rio entrar em sua conta no sistema
  • Solução: criar uma janela que o permita fazer isso
  • Vantagem: Ɖ mais atrativo ao usuĆ”rio comum utilizar uma janela
  • Desvantagem: demanda mais código

RegisterUser

  • Motivação: cadastrar um usuĆ”rio
  • Solução: Criar uma janela que faƧa o cadastro de um novo usuĆ”rio
  • Vantagem: Ɖ mais atrativo ao usuĆ”rio comum utilizar uma janela
  • Desvantagem: demanda mais código

SendMessage

  • Motivação: permitir a troca de mensagens entre os usuĆ”rios
  • Solução: Criar uma janela que permita o usuĆ”rio escolher para quem quer enviar uma mensagem e fazer com que o envio seja feito
  • Vantagem: Ɖ mais atrativo ao usuĆ”rio comum utilizar uma janela
  • Desvantagem: demanda mais código

ViewInterface

  • Motivação: Obrigar todas as janelas a seguir o mesmo padrĆ£o de nome de mĆ©todo para as configuraƧƵes
  • Solução: Criar uma interface com os mĆ©todos padrĆ£o e fazer todas as janelas implementarem ela
  • Vantagem: ter a certeza de um padrĆ£o de mĆ©todos de configuração de janelas
  • Desvantagem: estes mĆ©todos tem de ser pĆŗblicos

MƩtodos

ViewInterface

start

  • Motivação: ter um padrĆ£o para a configuração das janelas
  • Solução:ter um mĆ©todo padrĆ£o que seja por toda a configuração de uma janela
  • Vantagens: ter a configuração da janela agrupada neste mĆ©todo, fazendo com que, ao desejar acrescentar ou remover algo, ser necessĆ”rio apenas invocar neste mĆ©todo

position

  • Motivação: ter um padrĆ£o para criar o posicionamento das janelas.
  • Solução:ter um mĆ©todo padrĆ£o que seja responsĆ”vel pelo posicionamento dos componentes
  • Vantagens: ter o posicionamento dos componentes agrupado neste mĆ©todo

Actions

  • Motivação: ter um padrĆ£o para as aƧƵes dos botƵes
  • Solução: Criar um mĆ©todo que contenha todas as aƧƵes

ViewAPI

configScreen

  • Motivação: Remover a duplicação de código na configuração bĆ”sica de uma janela
  • Solução: ter um mĆ©todo que faƧa as configuraƧƵes da janela em relação a layout, tamanho, localização da janela, o que fazer quando a janela for fechada, visibilidade da janela
  • Vantagem: Reduzir a quantidade de código digitado e repetido anteriormente presente e reuso de mĆ©todos

addItems

  • Motivação: Automatizar e reduzir a quantidade de cdóigo escrito para adicionar componentes em uma janela
  • Solução: criar um mĆ©todo que ao ser invocado, recebe o container e os componentes a serem adicionados e os adiciona ao container
  • Vantagem: Redução de código e reuso de mĆ©todo

paint

  • Motivação: Automatizar o processo de colorir as fontes dos componentes
  • Solução: Criar um mĆ©todo que receba um array com todos os componentes e altere a cor da sua fonte

UTILS

toHtmlH3

  • Motivação: Formatar o texto a partir da estilização do html para um header H3
  • Solução: Usar o suporte dado pelo java para isso e criar um mĆ©todo que retorne a string formatada

toHtmlH2

  • Motivação: Formatar o texto a partir da estilização do html para um header H2
  • Solução: Usar o suporte dado pelo java para isso e criar um mĆ©todo que retorne a string formatada

toHtmlParagraph

  • Motivação: Formatar o texto a partir da estilização do html para uma tag p
  • Solução: Usar o suporte dado pelo java para isso e criar um mĆ©todo que retorne a string formatada

Pair

Construtor

  • Motivação: Atribuir os valores iniciais para a chave e o valor do pair
  • Solução: criar um mĆ©todo construtor que receba os dois parametros e inicie as vĆ”riaveis

JButtonUtils

modelHover

  • Motivação: criar uma animação de hover
  • Solução: criar um mĆ©todo que escute as aƧƵes do mouse e mude a cor de fundo do botĆ£o em relação a isso

paintButtons

  • Motivação: reduzir a duplicação de código para configurar um botĆ£o
  • Solução: criar um mĆ©todo que configure um botĆ£o da forma padrĆ£o definida pelo sistema

allignButtons

  • Motivação: alinhar o texto dos botƵes em relação a borda
  • Solução: criar um mĆ©todo que alinhe o texto do botĆ£o

icons color: #6E8EB5

Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages