Hi,
I would like to announce the jdt2famix project. This aims to be an
open-source solution for importing Java projects into Moose:
http://www.smalltalkhub.com/#!/~Moose/Jdt2Famix
The project is based on:
- JDT for raw parsing. This is implemented in Java.
- JNIPort for delegating to Pharo the Java methods that visit the Java AST.
Installation details can be found on the main project page.
The current importing logic is rudimentary, but the first goal was to setup
the whole ping-pong between Pharo and Java. This one works, and I am quite
happy about that. You can take a look at the JdtImporterTest.
CAVEATS:
- Due to a problem in JNIPort, currently, this project only works in Moose
5.0.
- Also, for now it works out of the box only for Mac OS X.
- And, on top of that, it requires Java 1.6 for now (until we will get the
Spur VM on 64 bits).
There are still quite some challenges left, but once we get this going, we
would also be able to use deep AST analysis live, and to do incremental
model update when something changes on disk. Furthermore, if it scales,
this would not be based on an intermediary MSE file anymore.
I would like to ask for help in several directions:
1. Implement the full model import. This would require diving into JDT and
implementing the corresponding mapping logic. I spent a few days on this.
It is hairy, but it is not that impossible (only it has a ton of edge
cases). This should be test driven, in that, for each case, we need to have
a corresponding sample.
2. Fix JNIPort to work in Pharo 5.
3. Get the whole thing to work out of the box for Linux and Windows.
4. Check scalability.
Please let me know your opinions, and let me know if you would like to
participate.
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Hi,
When using JNIPort I am getting a "java.lang.OutOfMemory: Java heap space".
To go around this, I would need to provide more memory to the JVM.
Essentially, I would like to provide the correspondent of a command line
like:
java -Xmx4000m
How should I do this?
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Hi!
Here is a serious bug: Type (in a playground or code browser) the following: #(‘hello’)
I get a violent #isNumberLiteralToken DNU on RBErrorToken
Also, consider the following:
The closing ) has the same color than the symbol. Which is not correct. It should have the same color than the opening (
Apparently these error do not occur in Pharo 5
https://github.com/moosetechnology/Moose/issues/1125 <https://github.com/moosetechnology/Moose/issues/1125>
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
I am experiencing a weird behavior when rotating text: an extra space seems to have been inserted. For example the screenshot shows ‘J anu ary’.
Anyone has seen this before? Any idea how to fix it?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi Alex,
you've marked TRConstraint as obsolete, however not all behavior has been
yet implemented in new RTConstraint.
Namely methods from "public - resizing", "public - camera", and "public -
aligning".
Secondly I am not sure about the name of RTConstraint class>>child:parent:
(Tudor also didn't like the name when he saw it. :))
I don't think the naming fits well into Roassal... maybe RTConstraint
class>>on:backElement: ?
Thanks,
Peter
Hi Alex,
I've encountered a very strange behavior and I cannot tell what is going on.
This is old RTEdge build*
~~~~~~~~~~~~~~~~~~~~~
| v es |
v := RTView new.
es := RTBox elementsOn: (1 to: 10).
v addAll: es.
es @ RTDraggable.
RTEdge buildEdgesFromObjects: (1 to: 10) from: #yourself toAll: [:value |
(Array with: value -1 with: value + 1 with: value + 2) ] inView: v.
RTForceBasedLayout on: es.
v addAnimation: (RTSpringLayoutStepping new view: v).
v @ RTDraggableView.
^ v
~~~~~~~~~~~~~~~~~~~~~~~~
the layouting is almost instant,
however if I use RTEdgeBuilder suddenly it is very slow
~~~~~~~~~~~~~~~~~~~~~~~~
| v es |
v := RTView new.
es := RTBox elementsOn: (1 to: 10).
v addAll: es.
es @ RTDraggable.
RTEdgeBuilder new
view: v;
elements: es;
connectToAll: [:value | (Array with: value -1 with: value + 1 with: value
+ 2) ].
RTForceBasedLayout on: es.
v addAnimation: (RTSpringLayoutStepping new view: v).
v @ RTDraggableView.
^ v
~~~~~~~~~~~~~~~~~~~~~~~~~~
the view still has the same number of elements and edges and the output
looks identical, but with EdgeBuilder is it very slow.
Profiler is showing me that with EdgeBuilder it spends a lot of time in
attach points and with moving edges, which is strange.
In either case it has no right to be so slow with 10 elements and 26
edges...
Can you reproduce this behavior?
Thanks,
Peter
Hi all
I've just tried to use GLMAnnouncingCollection and found something odd.
When you use it and its passed into a block (such as TableColumn
computation:) it passes in the whole collection, not each item.
Change the collection to OrderedCollection and it works as expected
(except you lose the behaviour of GLMAnnouncingCollection).
So, to find out how this is used I go to the examples provided,
specifically "Magritte presentation".
This has the following comment:
"self new magritte openOn: GLMMagrittePersonExample sampleData"
"GLMMagrittePersonExample sampleReset"
"note, sampleData is aGLMAnnouncingCollection"
This does not work as expected (or indeed how it used to).
I've looked at this before and done work with Magritte using this
example with Diego Lont and Stephan Eggermont.
Its definitely become broken since the last time I looked at it.
Can we confirm?
Thanks
--
Gareth Cox
IT Manager/Developer
Inspired Org (PTY) Ltd
email: gareth(a)inspired.org <mailto:gareth@inspired.org>
Hi Hannes!
Here is a first shoot paired-programmed with Juraj using Roassal:
-=-=-=-=-=-=-=-=-=-=-=-=
b := RTTimeLine new.
b addEntry: (RTTimeLineEntry new identifier: #WP1; start: 0; end: 5).
b addEntry: (RTTimeLineEntry new identifier: #WP2; start: 5; end: 8).
b addEntry: (RTTimeLineEntry new identifier: #WP3; start: 7; end: 10).
b axisX numberOfLabels: 5.
b
-=-=-=-=-=-=-=-=-=-=-=-=
Here some slightly more elaborated example:
-=-=-=-=-=-=-=-=-=-=-=-=
“One color per entry"
| b d |
b := RTTimeLine new.
b addEntry: (RTTimeLineEntry new identifier: #c1; start: 0; end: 5).
b addEntry: (RTTimeLineEntry new identifier: #c1; start: 6; end: 8).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 0; end: 5).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 8; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c3; start: 0; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c4; start: 5; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c5; start: 5; end: 8).
d := RTVerticalTickLineDecorator new.
d shape line color: Color white.
b addDecorator: d.
b axisX
numberOfLabels: 5;
labelRotation: -45;
labelConversion: [ :v | Date year: 2015 day: v ].
b shape color: (RTMultiLinearColorForIdentity new objects: b entries).
b
-=-=-=-=-=-=-=-=-=-=-=-=
One color per timeline
-=-=-=-=-=-=-=-=-=-=-=-=
| b |
b := RTTimeLine new.
b addEntry: (RTTimeLineEntry new identifier: #c1; start: 0; end: 5).
b addEntry: (RTTimeLineEntry new identifier: #c1; start: 6; end: 8).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 0; end: 5).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 8; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c3; start: 0; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c4; start: 5; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c5; start: 5; end: 8).
d := RTVerticalTickLineDecorator new.
d shape line color: Color white.
b addDecorator: d.
b axisX
numberOfLabels: 5;
labelRotation: -45;
labelConversion: [ :v | Date year: 2015 day: v ].
b shape color: (RTMultiLinearColorForIdentity new command: #identifier; objects: #(c1 c2 c3 c4 c5)).
b
-=-=-=-=-=-=-=-=-=-=-=-=
Age of some classes:
-=-=-=-=-=-=-=-=-=-=-=-=
| b |
b := RTTimeLine new.
b extent: 500 @ 500.
((RTShape withAllSubclasses sortedAs: #ageInDaysRounded) select: #hasMethods)
do: [ :cls |
e := RTTimeLineEntry new.
e identifier: cls.
e start: cls computeYoungestMethod ageInDays.
e end: cls computeOldestMethod ageInDays.
b addEntry: e ].
b
-=-=-=-=-=-=-=-=-=-=-=-=
All these examples are in the Roassal time line example menu.
This is still an early version. Let us know how it goes!
https://www.facebook.com/ObjectProfile/posts/840542572699008
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> On May 7, 2015, at 4:25 PM, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>
> Hello
>
> Has somebody done a GANTT chart?
>
> GanttChartMorph openOn: aCollectionOfActivities
>
> ?
>
> Activities have
> - id
> - description
> - start date
> - end date
> ?
>
> Regards
>
> Hannes
>