Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
StarUML Evológica Plugin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
evologica
StarUML Evológica Plugin
Commits
90c1a185
Commit
90c1a185
authored
Sep 30, 2020
by
Jucelino Fonseca
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ajustes
parent
412edb52
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
257 additions
and
36 deletions
+257
-36
ituExplorerV2.dfm
EvoUMLPlugin/src/ituExplorerV2.dfm
+1
-1
ituExplorerV2.pas
EvoUMLPlugin/src/ituExplorerV2.pas
+256
-35
No files found.
EvoUMLPlugin/src/ituExplorerV2.dfm
View file @
90c1a185
object ExplorerV2: TExplorerV2
object ExplorerV2: TExplorerV2
Left = 5
65
Left = 5
23
Height = 871
Height = 871
Top = 77
Top = 77
Width = 1387
Width = 1387
...
...
EvoUMLPlugin/src/ituExplorerV2.pas
View file @
90c1a185
...
@@ -3,11 +3,11 @@ unit ituExplorerV2;
...
@@ -3,11 +3,11 @@ unit ituExplorerV2;
interface
interface
uses
uses
LCLIntf
,
SysUtils
,
Variants
,
Classes
,
Graphics
,
Controls
,
Forms
,
LCLIntf
,
SysUtils
,
Variants
,
Classes
,
Graphics
,
Controls
,
Forms
,
Clipbrd
,
Clipbrd
,
Dialogs
,
ExtCtrls
,
StdCtrls
,
ComCtrls
,
ActnList
,
Dialogs
,
ExtCtrls
,
StdCtrls
,
ComCtrls
,
ActnList
,
LCLType
,
LCLType
,
acuSQLDialectManager
,
ImgList
,
acuframework
,
utuMessage
,
acuSQLDialectManager
,
ImgList
,
acuframework
,
utuMessage
,
IntegracaoDelphiSUML
,
IntegracaoDelphiSUML
,
acuObjectExplorer
,
Menus
,
Buttons
,
SynEdit
,
acuObjectExplorer
,
Menus
,
Buttons
,
SynEdit
,
SynHighlighterSQL
,
SynCompletion
,
SynHighlighterSQL
,
SynCompletion
,
acuModel
,
acuRepositorySQL
,
SynEditKeyCmds
,
Types
;
acuModel
,
acuRepositorySQL
,
SynEditKeyCmds
,
SynHighlighterPython
,
Types
;
type
type
...
@@ -133,13 +133,19 @@ type
...
@@ -133,13 +133,19 @@ type
procedure
ResizeColumns
(
piListView
:
TListView
);
procedure
ResizeColumns
(
piListView
:
TListView
);
function
GetStringEntreParenteses
(
piString
:
string
)
:
string
;
function
GetStringEntreParenteses
(
piString
:
string
)
:
string
;
function
GetNumeroDeStringOID
(
piString
:
string
)
:
string
;
function
GetNumeroDeStringOID
(
piString
:
string
)
:
string
;
function
GetClassTicket
(
piBloco
,
piPropertyName
:
string
):
acClassTicket
;
procedure
CopiaTextoObjeto
(
piObjeto
:
TTreeNode
);
procedure
CopiaTextoObjeto
(
piObjeto
:
TTreeNode
);
function
BuscaParcial
(
piSubstring
,
piTexto
:
string
):
boolean
;
function
BuscaParcialClasse
(
piCLasse
:
string
;
piFiltrar
:
boolean
):
boolean
;
function
BuscaParcialClasse
(
piCLasse
:
string
;
piFiltrar
:
boolean
):
boolean
;
function
BuscarParcialChildClass
(
piClassTicket
:
acClassTicket
;
piFiltrar
:
boolean
):
boolean
;
function
BuscarParcialChildClass
(
piClassTicket
:
acClassTicket
;
piFiltrar
:
boolean
):
boolean
;
function
FindParcialNodeClass
(
piClassTicketPai
:
acClassTicket
;
piFiltrar
:
boolean
):
acClassTicket
;
function
FindParcialNodeClass
(
piClassTicketPai
:
acClassTicket
;
piFiltrar
:
boolean
):
acClassTicket
;
function
GetClassTicketRelation
(
piSynCompletion
:
TSynCompletion
):
acClassTicket
;
procedure
PreencherSynCompletionRelacionamentos
(
piClassTicket
:
acClassTicket
;
piSynCompletion
:
TSynCompletion
);
procedure
PreencherSynCompletionClasses
(
piSynCompletion
:
TSynCompletion
);
procedure
PreencherSynCompletionClasses
(
piSynCompletion
:
TSynCompletion
);
procedure
PreencherSynCompletionAtributos
(
piSynCompletion
:
TSynCompletion
;
piClassTicket
:
acClassTicket
=
nil
);
procedure
PreencherSynCompletionAtributos
(
piSynCompletion
:
TSynCompletion
;
piClassTicket
:
acClassTicket
);
procedure
ExecutarSybCompletion
(
piSynCompletion
:
TSynCompletion
);
procedure
ExecutarSybCompletion
(
piSynCompletion
:
TSynCompletion
);
procedure
PreencherAposDigitarPonto
(
piSynCompletion
:
TSynCompletion
;
piClassTicketPai
:
acClassTicket
=
nil
);
procedure
AlimentarListaCompletion
(
piLinha
:
string
;
piAceitaAtributo
:
boolean
;
piLista
:
TStrings
);
protected
protected
procedure
CreateParams
(
var
Params
:
TCreateParams
);
override
;
procedure
CreateParams
(
var
Params
:
TCreateParams
);
override
;
function
Connect
:
acPersistenceSession
;
function
Connect
:
acPersistenceSession
;
...
@@ -481,9 +487,7 @@ procedure TExplorerV2.SynEditOQLCommandProcessed(Sender: TObject;
...
@@ -481,9 +487,7 @@ procedure TExplorerV2.SynEditOQLCommandProcessed(Sender: TObject;
begin
begin
if
Achar
=
'.'
then
if
Achar
=
'.'
then
begin
begin
PreencherSynCompletionAtributos
(
scpAtributoCompletion
);
PreencherAposDigitarPonto
(
scpAtributoCompletion
);
scpClasseCompletion
.
Editor
:=
nil
;
scpAtributoCompletion
.
Editor
:=
SynEditOQL
;
ExecutarSybCompletion
(
scpAtributoCompletion
);
ExecutarSybCompletion
(
scpAtributoCompletion
);
end
;
end
;
...
@@ -523,15 +527,9 @@ begin
...
@@ -523,15 +527,9 @@ begin
li_Pos
:=
Pos
(
'.'
,
ls_Aux
);
li_Pos
:=
Pos
(
'.'
,
ls_Aux
);
if
li_Pos
>
0
then
if
li_Pos
>
0
then
begin
begin
PreencherSynCompletionAtributos
(
scpAtributoCompletion
,
lClassTicket
);
PreencherAposDigitarPonto
(
scpAtributoCompletion
,
lClassTicket
);
if
not
Assigned
(
scpAtributoCompletion
.
Editor
)
then
begin
scpAtributoCompletion
.
Editor
:=
SynEditOQL
;
scpClasseCompletion
.
Editor
:=
nil
;
end
;
lbMostrarClasse
:=
false
;
lbMostrarClasse
:=
false
;
end
;
end
;
end
;
end
;
end
;
end
;
...
@@ -655,6 +653,23 @@ begin
...
@@ -655,6 +653,23 @@ begin
Clipbrd
.
Clipboard
.
AsText
:=
lString
;
Clipbrd
.
Clipboard
.
AsText
:=
lString
;
end
;
end
;
function
TExplorerV2
.
BuscaParcial
(
piSubstring
,
piTexto
:
string
):
boolean
;
var
lSubstring
,
lTexto
:
string
;
begin
if
trim
(
piSubstring
)
<>
''
then
begin
lSubstring
:=
TiraAcentos
(
trim
(
UpperCase
(
piSubstring
)));
lTexto
:=
TiraAcentos
(
trim
(
UpperCase
(
piTexto
)));
result
:=
Pos
(
lSubstring
,
lTexto
)
>
0
;
end
else
begin
result
:=
true
;
end
;
end
;
function
TExplorerV2
.
BuscaParcialClasse
(
piCLasse
:
string
;
piFiltrar
:
boolean
):
boolean
;
function
TExplorerV2
.
BuscaParcialClasse
(
piCLasse
:
string
;
piFiltrar
:
boolean
):
boolean
;
var
lClasseTree
,
var
lClasseTree
,
lClasseP
:
string
;
lClasseP
:
string
;
...
@@ -743,6 +758,55 @@ begin
...
@@ -743,6 +758,55 @@ begin
end
;
end
;
function
TExplorerV2
.
GetClassTicketRelation
(
piSynCompletion
:
TSynCompletion
):
acClassTicket
;
var
p1
,
zeroPoint
:
TPoint
;
ls_aux
:
string
;
lPropertyName
:
string
;
begin
//http://wiki.lazarus.freepascal.org/SynEdit#Logical.2FPhysical_caret_position
{p1 := SynEdit1.CaretXY ;
ls_aux := SynEdit1.LineText;
li_Pos := Pos('ng',ls_aux);
zeroPoint.X := li_pos;
zeroPoint.y := SynEdit1.CaretY;
ls_aux := trim(SynEdit1.TextBetweenPoints[zeroPoint,p1]);
lPropertyName := trim(SynEditOQL.GetWordAtRowCol(SynEditOQL.PrevWordPos)); }
result
:=
GetClassTicket
(
ls_aux
,
lPropertyName
);
end
;
procedure
TExplorerV2
.
PreencherSynCompletionRelacionamentos
(
piClassTicket
:
acClassTicket
;
piSynCompletion
:
TSynCompletion
);
var
li
:
integer
;
lRelationTicket
:
acRelationTicket
;
ls_NameRelacionamento
:
string
;
lClassTicketRelation
:
acClassTicket
;
begin
piSynCompletion
.
ItemList
.
Clear
;
if
not
Assigned
(
piClassTicket
)
then
begin
lClassTicketRelation
:=
GetClassTicketRelation
(
piSynCompletion
);
exit
;
end
else
begin
lClassTicketRelation
:=
piClassTicket
;
end
;
for
li
:=
0
to
pred
(
lClassTicketRelation
.
RelationTicketsIn
.
Count
)
do
begin
lRelationTicket
:=
acRelationTicket
(
lClassTicketRelation
.
RelationTicketsIn
.
Objects
[
li
]);
piSynCompletion
.
ItemList
.
Add
(
lRelationTicket
.
DestinationPropertyName
);
end
;
for
li
:=
0
to
pred
(
lClassTicketRelation
.
RelationTicketsOut
.
Count
)
do
begin
lRelationTicket
:=
acRelationTicket
(
lClassTicketRelation
.
RelationTicketsOut
.
Objects
[
li
]);
piSynCompletion
.
ItemList
.
Add
(
lRelationTicket
.
OriginPropertyName
);
end
;
end
;
procedure
TExplorerV2
.
PreencherSynCompletionClasses
(
piSynCompletion
:
TSynCompletion
);
procedure
TExplorerV2
.
PreencherSynCompletionClasses
(
piSynCompletion
:
TSynCompletion
);
var
lEnumerator
:
acEnumerator
;
var
lEnumerator
:
acEnumerator
;
lClassTicket
:
acClassTicket
;
lClassTicket
:
acClassTicket
;
...
@@ -762,30 +826,17 @@ begin
...
@@ -762,30 +826,17 @@ begin
end
;
end
;
procedure
TExplorerV2
.
PreencherSynCompletionAtributos
(
piSynCompletion
:
TSynCompletion
;
piClassTicket
:
acClassTicket
=
nil
);
procedure
TExplorerV2
.
PreencherSynCompletionAtributos
(
piSynCompletion
:
TSynCompletion
;
piClassTicket
:
acClassTicket
);
var
li
:
integer
;
var
li
:
integer
;
lAttributeTicket
:
acAttributeTicket
;
lAttributeTicket
:
acAttributeTicket
;
lClassTicket
:
acClassTicket
;
ls_NameClass
:
string
;
begin
begin
if
not
Assigned
(
piClassTicket
)
then
begin
if
Assigned
(
piClassTicket
)
then
ls_NameClass
:=
trim
(
SynEditOQL
.
GetWordAtRowCol
(
SynEditOQL
.
PrevWordPos
));
if
ls_NameClass
<>
''
then
begin
lClassTicket
:=
self
.
MetaModel
.
GetClassTicketByName
(
ls_NameClass
);
end
;
end
else
begin
lClassTicket
:=
piClassTicket
;;
end
;
if
Assigned
(
lClassTicket
)
then
begin
begin
piSynCompletion
.
ItemList
.
Clear
;
piSynCompletion
.
ItemList
.
Clear
;
for
li
:=
0
to
pred
(
l
ClassTicket
.
Attributes
.
Count
)
do
for
li
:=
0
to
pred
(
pi
ClassTicket
.
Attributes
.
Count
)
do
begin
begin
lAttributeTicket
:=
acAttributeTicket
(
l
ClassTicket
.
Attributes
.
Objects
[
li
]);
lAttributeTicket
:=
acAttributeTicket
(
pi
ClassTicket
.
Attributes
.
Objects
[
li
]);
if
lAttributeTicket
.
Stereotype
=
acAttributeStereotype
.
pvPersistent
then
if
lAttributeTicket
.
Stereotype
=
acAttributeStereotype
.
pvPersistent
then
begin
begin
piSynCompletion
.
ItemList
.
Add
(
lAttributeTicket
.
AttributeName
);
piSynCompletion
.
ItemList
.
Add
(
lAttributeTicket
.
AttributeName
);
...
@@ -806,6 +857,158 @@ begin
...
@@ -806,6 +857,158 @@ begin
piSynCompletion
.
Execute
(
''
,
apoint
);
piSynCompletion
.
Execute
(
''
,
apoint
);
end
;
end
;
procedure
TExplorerV2
.
PreencherAposDigitarPonto
(
piSynCompletion
:
TSynCompletion
;
piClassTicketPai
:
acClassTicket
=
nil
);
var
li
,
li_Pos
:
integer
;
lAttributeTicket
:
acAttributeTicket
;
lClassTicket
:
acClassTicket
;
ls_Aux
,
ls_NameClass
:
string
;
p1
,
zeroPoint
:
TPoint
;
begin
piSynCompletion
.
ItemList
.
Clear
;
p1
:=
SynEditOQL
.
NextTokenPos
;
//logical = byte position
zeroPoint
:=
SynEditOQL
.
PrevWordPos
;
ls_Aux
:=
SynEditOQL
.
TextBetweenPoints
[
zeroPoint
,
p1
];
li_Pos
:=
Pos
(
'..'
,
ls_Aux
);
if
li_Pos
>
0
then
begin
exit
;
end
;
if
not
Assigned
(
piClassTicketPai
)
then
begin
ls_NameClass
:=
trim
(
SynEditOQL
.
GetWordAtRowCol
(
SynEditOQL
.
PrevWordPos
));
if
ls_NameClass
<>
''
then
begin
lClassTicket
:=
self
.
MetaModel
.
GetClassTicketByName
(
ls_NameClass
);
end
;
end
else
begin
lClassTicket
:=
piClassTicketPai
;
end
;
ls_Aux
:=
LowerCase
(
SynEditOQL
.
LineText
);
li_Pos
:=
Pos
(
'from'
,
ls_Aux
);
if
li_Pos
>
0
then
begin
PreencherSynCompletionRelacionamentos
(
lClassTicket
,
piSynCompletion
)
end
else
begin
PreencherSynCompletionAtributos
(
piSynCompletion
,
lClassTicket
);
end
;
if
not
Assigned
(
piSynCompletion
.
Editor
)
then
begin
piSynCompletion
.
Editor
:=
SynEditOQL
;
scpClasseCompletion
.
Editor
:=
nil
;
end
;
end
;
procedure
TExplorerV2
.
AlimentarListaCompletion
(
piLinha
:
string
;
piAceitaAtributo
:
boolean
;
piLista
:
TStrings
);
var
lClassTicketCurrent
,
lClassTicketAux
:
acClassTicket
;
lEnumerator
:
acEnumerator
;
li
,
li_Pos
:
integer
;
ls_aux
,
ls_Objeto
:
string
;
lRelationTicket
:
acRelationTicket
;
lbAchei
:
boolean
;
lAttributeTicket
:
acAttributeTicket
;
begin
li_Pos
:=
Pos
(
'.'
,
piLinha
);
piLista
.
Clear
;
if
li_Pos
<=
0
then
begin
lEnumerator
:=
self
.
MetaModel
.
ClassTickets
.
GetEnumerator
;
try
piLista
.
Clear
;
while
not
lEnumerator
.
EOL
do
begin
lClassTicketCurrent
:=
acClassTicket
(
lEnumerator
.
Current
);
if
BuscaParcial
(
piLinha
,
lClassTicketCurrent
.
PersistentObjectClassName
)
then
begin
piLista
.
Add
(
lClassTicketCurrent
.
PersistentObjectClassName
);
end
;
lEnumerator
.
MoveNext
;
end
;
finally
lEnumerator
.
Free
;
end
;
end
else
begin
ls_aux
:=
trim
(
piLinha
);
lClassTicketAux
:=
nil
;
ls_Objeto
:=
trim
(
Copy
(
ls_aux
,
0
,
li_Pos
-
1
));
lClassTicketCurrent
:=
self
.
MetaModel
.
GetClassTicketByName
(
ls_Objeto
);
while
li_Pos
>
0
do
begin
ls_aux
:=
trim
(
Copy
(
ls_aux
,
li_Pos
+
1
,
Length
(
ls_aux
)));
li_Pos
:=
Pos
(
'.'
,
ls_aux
);
ls_Objeto
:=
trim
(
Copy
(
ls_aux
,
0
,
li_Pos
-
1
));
if
Assigned
(
lClassTicketCurrent
)
and
(
ls_Objeto
<>
''
)
then
begin
lbAchei
:=
false
;
for
li
:=
0
to
pred
(
lClassTicketCurrent
.
RelationTicketsIn
.
Count
)
do
begin
lRelationTicket
:=
acRelationTicket
(
lClassTicketCurrent
.
RelationTicketsIn
.
Objects
[
li
]);
if
SameText
(
lRelationTicket
.
DestinationPropertyName
,
ls_Objeto
)
then
begin
lClassTicketAux
:=
lRelationTicket
.
OriginClassTicket
;
lbAchei
:=
true
;
break
;
end
;
end
;
if
not
lbAchei
then
begin
for
li
:=
0
to
pred
(
lClassTicketCurrent
.
RelationTicketsOut
.
Count
)
do
begin
if
SameText
(
lRelationTicket
.
DestinationPropertyName
,
ls_Objeto
)
then
begin
lClassTicketAux
:=
lRelationTicket
.
OriginClassTicket
;
break
;
end
;
end
;
end
;
end
;
end
;
if
Assigned
(
lClassTicketAux
)
then
begin
lClassTicketCurrent
:=
lClassTicketAux
;
end
;
if
Assigned
(
lClassTicketCurrent
)
then
begin
if
piAceitaAtributo
then
begin
for
li
:=
0
to
pred
(
lClassTicketCurrent
.
Attributes
.
Count
)
do
begin
lAttributeTicket
:=
acAttributeTicket
(
lClassTicketCurrent
.
Attributes
.
Objects
[
li
]);
if
lAttributeTicket
.
Stereotype
=
acAttributeStereotype
.
pvPersistent
then
begin
piLista
.
Add
(
lAttributeTicket
.
AttributeName
);
end
;
end
;
end
;
for
li
:=
0
to
pred
(
lClassTicketCurrent
.
RelationTicketsIn
.
Count
)
do
begin
lRelationTicket
:=
acRelationTicket
(
lClassTicketCurrent
.
RelationTicketsIn
.
Objects
[
li
]);
piLista
.
Add
(
lRelationTicket
.
DestinationPropertyName
);
end
;
for
li
:=
0
to
pred
(
lClassTicketCurrent
.
RelationTicketsOut
.
Count
)
do
begin
lRelationTicket
:=
acRelationTicket
(
lClassTicketCurrent
.
RelationTicketsOut
.
Objects
[
li
]);
piLista
.
Add
(
lRelationTicket
.
OriginPropertyName
);
end
;
end
;
end
;
end
;
procedure
TExplorerV2
.
CreateParams
(
var
Params
:
TCreateParams
);
procedure
TExplorerV2
.
CreateParams
(
var
Params
:
TCreateParams
);
begin
begin
inherited
CreateParams
(
Params
);
inherited
CreateParams
(
Params
);
...
@@ -1182,6 +1385,24 @@ begin
...
@@ -1182,6 +1385,24 @@ begin
Result
:=
lString
;
Result
:=
lString
;
end
;
end
;
function
TExplorerV2
.
GetClassTicket
(
piBloco
,
piPropertyName
:
string
):
acClassTicket
;
var
lEnumerator
:
acEnumerator
;
lRelationTicket
:
acRelationTicket
;
begin
lEnumerator
:=
MetaModel
.
RelationTickets
.
GetEnumerator
;
try
while
not
lEnumerator
.
EOL
do
begin
lRelationTicket
:=
acRelationTicket
(
lEnumerator
.
Current
);
//if lRelationTicket.;
lEnumerator
.
MoveNext
;
end
;
finally
lEnumerator
.
Free
;
end
;
end
;
function
TExplorerV2
.
GetStringEntreParenteses
(
piString
:
string
):
string
;
function
TExplorerV2
.
GetStringEntreParenteses
(
piString
:
string
):
string
;
var
var
lString
:
string
;
lString
:
string
;
...
@@ -1447,4 +1668,4 @@ begin
...
@@ -1447,4 +1668,4 @@ begin
{$ENDIF}
{$ENDIF}
end
;
end
;
end
.
end
.
11
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment