Blogs

  • Browse Blogs
  • My Blog
  • My Updates

Tags Help

  • View as cloud  | list

Similar Blogs

photo

Patrick Picar...

62 Entries |  Patrick Picard
Updated 
RatingsRatings 2     CommentsComments 112
photo

Lotus Nut

111 Entries |  Chris Whisonant
Updated 
RatingsRatings 23     CommentsComments 157
photo

Uh Clem's Adm...

54 Entries |  Chris Mobley
Updated 
RatingsRatings 8     CommentsComments 55
photo

Life is too s...

33 Entries |  Barbara Skedel
Updated 
RatingsRatings 3     CommentsComments 56
photo

Yellow is the...

72 Entries |  Tim Tripcony
Updated 
RatingsRatings 2     CommentsComments 34

Jan Schulz

Blog Authors:  Jan Schulz  

Previous |  Main  | Next

I got myself recruited into eProductivity

Jan Schulz  |     |  Tags:  eproductivity  |  Comments (0)
Nice: Eric Mack gave me the opportunity to evaluate the eProductivity mailtemplate and blog about the experience and get a free license if I like it in the end. Thanks for that Eric! :-) So this is kind of an introductory posting and then over the next weeks I will share how my little experiment with eProductivity proceeds.

I think my experience will be unique as I've just finished with my diploma thesis and I'm currently looking for my first job. So basically I've not a lot "professional" life to organize right now but just my private one and my point of view will (hopefully) be a little different than all the other guys who gave eProductitivity a try :-).

Up to now I used all kinds of tools to organize my life. My experiences vary from calendars written on paper by hand, a single email in my notes mailfile (which contained all my todos organized by priorities and estimated time), simple inbox unread marks up to several different calendar tools (including KOrganizer and Notes).  Usually the problem was, that the tool got in the way and it was much more overhead to organize or get a big picture view than to not use the tools. But in times of stress or more complicated things (even a student has that sometimes :-) I usually got back to to one or the other: mostly paper and color coding...

I also must say that I don't have any experience in "Getting things done": my only experience with time and self management is the book "slow down speed up" by Lothar J. Seiwert (highly recomended!) and several ways, which do not work in one way or the other :-).

So what I'm basically looking for is an app, which
  • collects and keeps track of all the little things I have in my mind
  • lets me organize my actions/tasks and present it to me in organized forms
  • lets me quickly prioritize my tasks
  • lets me plan my next day
And most of all: does this without getting in my way.

So after ready all the nice reviews of eProductivity I got curious and had a look at the video postet and the evaluation database. What got me hooked was the ease with what you could add new tasks and keep them organized: just drag and drop an email and you have a new task ready and have it (almost) automaticaly asigned to a context or a project

So after doing the nice tutorial in the evaluation database, I send in feedback and got this chance.

The Adapter Pattern or working around that LS has ...

Jan Schulz  |     |  Tags:  oop lotusscript  |  Comments (0)
Peter Pressnel wrote a post about class casting and polymorphism in LotusScript. Unfortunatelly, in LS you can only extend one class, not implement Interfaces (like in every other OO language). Interfaces lets you add functionality to a given class by implementing the Interface: a Person will also by "Compareable" by implementing that interface. Now every method which needs a "Compareable" argument can work with Persons.

This missing feature in LS basicly means that you have to build this functionality anew every time you need it: you need a person.compareToAnotherPerson(aPerson as Person) and also your sorted list (or whatever needs something compared) needs to know about that method. This means a lot of unnecessary programming and also it binds your code together and you will very soon get either a very big LS file or the famous "Illegal circular use" error. Not nice!

But we have help from the Adapter Pattern. Instead of adding the functionality by implementing an interface we ask for an adapter of the object which implements this interface [1].

The adapater pattern is usually also implemented via an interface: IAdaptable.getAdapter(classname) which either returns an object of that classname or nothing. As there is no Interfaces in LS this method is implemented in a basic class from which every other of my custume classes is derived: BasicObject. This class also implements "toString() (usefull as a message to logError()...) and such basic things.

The API contract for that method is very easy: either return an object of the specified class, which represents the original object or nothing. Classcasting an object now becomes:
dim manager  as Manager
set manager = person.getAdapter("MANAGER")
if manager is nothing then Error 1000, "Person is not a Manager!"
[...]
instead of
dim manager as Manager
if not (person isa ucase("Manager")) then error 1000, "Person is a not a manager!"
set manager = person
[...]

So the insert method of a sorted list, which expects a "Compareable" object (or nothing), would be something like this: list.insert(me.getAdapter("COMPAREABLE")).

This is the BaseObject.getAdapter implementation.
Class BaseObject
' [ public function toString() as String ... ]

'/**

' * Returns an Adapter of the current Object of the aked-for type or nothing
' * The basic implementation returns this object if the caller asked for the class
' * or a subclass of the class of the current object
' * Should be overwritten to do something more usefull!
' * @autor Jan Schulz
' */

Public Function getAdapter(nameOfObject As String) As BaseObject
If Ucase(nameOfObject) = Typename(Me) Then
Set getAdapter = Me
End If
If Me Isa Ucase(nameOfObject) Then
Set getAdapter = Me
End If
End Function


End Class
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.

An addition would be the implementation of an AdapterManager (see the article on eclipse.org): This would even solve the problem that you need to know the adapter class in the "adaptable" object (-> problems with "Illegal circular use"...). This would need a small AdapterFactory with one methods: getAdapter(object as BaseObject, classname as String). This factory would be implemented for each used combination and then an instance of such an object added to the AdapaterManager. Now you can query the AdapaterManager for an Adapater of your object: getAdapterManager().getAdapter(object, "SomeClassName"). In this method you would ask each adapterFactory for this combination and return if you get an object back (or nothing if no factory can return such an object). Now the object wouldn't need to know that it is adaptable to a "SomeClassName".

[1] This pattern is usually used in other OO languages to keep the API of an class small and clean: if you need your person compareable, the methods of the "Compareable" Interface would be part of the API contract for the "Person" class. This is usually not desireably, especially if you add serveral interfaces.

Nice looking buttons in the Notes Client

Jan Schulz  |     |  Tags:  ui lotus notes web2.0 buttons client  |  Comments (3)
After reading Chris Toohey's Quickpoll about Framesets vs. Web I started to think about rewriting a typical Notes Interface (outline to the left, views on the right) to be more "web 2.0" friendly with a landing page. To complete the challenge, the UI should be translateable and, of course, nice looking. The first problem: the typical landing page has "call to action" buttons: big, shiny buttons with an icon and some text. So, how can you do that in Notes? My tries:

  • Buttons: can be translated via onLoad events and "document.forms[0].Button.value = document.forms[0].cfdField_LabelForButton.value", no icons possible
  • HTML pass thrugh Computed text (=translateable) with <input>s -> just plain ugly.
  • HTML pass thrugh Computed text with <button>s -> Does not work, as the notes internal html parser does not recognise the button tag
  • Notes Table (with nice looking background + rounded corners) and a hotspot -> does not work, as the hotspot can't be set around the table and also because I haven't found a way to vertical center text in a table cell.
  • Outline with one entry, styled with rounded corners, translateable the UI (lables are computeable), mouse over effects for the text. Only problem: setting width to "fits to content" has no effect, which means that the translations must be as long as the original text (seems to me that this is a notes bug).
Here is a screenshot:

image
The last one with the styled outline entry seems to be the best idea up to now, but the "fit to content" problem is bad :-(

Anybody with some ideas how to get nice, translateable, hover aware buttons with icons on it in the notes client?

Here is the demo DB...

Previous |  Main  | Next
Skip to main content link. Accesskey S
IBM Lotus Connections Help Tools About

Tags

A tag is a keyword that is used to categorize an entry. To view the entries with a particular tag, click a tag name or enter a tag in the box.
The tag cloud indicates the frequency of tag use. Popular tags appear darkest. The slider control adjusts how many tags are displayed in the tag cloud.