Author Archives: pgfeldman

Mike 1.5.2011

Looked in to incorporating KapLab’s Kap Inspect.  It’s a runtime debug tool which lets you look at all existing UIComponents, their current properties, styles, and other items.  Unfortunately it’s written with heavy dependence on Flex 3 and you can’t use it in Flex 4 without making some changes to Flex builder and your sdk directories.  The source is available but very large and I don’t want to spend a week trying to get some cool debug tool to work.

So it turns out Kap Inspect is based on another open source project with a much looser license: FlexSpy.  It has a few less features than Kap Inspect, but works in Flex 4 without any changes and still allows access to styles and properties so I added it to our framework as another debug window.  We may need to hide it when moving to production.

Enter Monkey Patching.  It is apparently possible to inject code in to any existing class by recreating the file in your project, placing it at the same package location, and changing anything inside the file you want.  Your class will the override the Flex library class and any class that extends will inherit your class, not the original one.  Doug Mccune came up with a way to override mx.core.FlexSprite (the base class of all flex components) and add a dictionary which keeps references whenever addEventListener is called.  This allows a debug window to view all event listeners on any component.  So I put together FlexSpy and the monkey patched Flex Sprite to get a very useful new debug window.

Dong Shin 01.05.2011

  • PPM Changes
    • continue working on DBMgmtPanel
      • list of tables in the PPM database
      • retrieve 35 records at a time
      • search currently displayed data added
      • delete working
      • update working
    • more table restructuring investigation
      • ALTER TABLE children ADD CONSTRAINT fk_parent_keyfield FOREIGN KEY (parent_keyfield) REFERENCES parent (keyfield) ON DELETE NO ACTION ON UPDATE CASCADE
      • parent_keyfield must be indexed!!!

Phil 1.5.2011

7:30 – 4:30 VISIBILITY

  • Rode the motorcycle in today – brr.
  • Working on making the binary communication classes useful.
  • Good link on how to hook up the eclipse debugger to a servlet running in tomcat: http://wikijava.org/wiki/Debugging_a_servlet_with_tomcat_and_Eclipse_tutorial
    • If you’re using the launcher in windows, add the following argument to your tomcat->config->java tab:
      • -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
  • Sending wrapped serialized objects. The “toString” method for printing works as well.
  • Starting the client IDE. I’m thinking SWT, since we’ll probably raid Eclipse for components.
  • Connected to the Eclipse CVS repo

Mike 1.3.2011

Working on a run-time config menu for advanced data grids, this menu will need to include:

  • A hierarchical display of columns and a way to edit them since some columns will have multiple sub-columns and why stop there
  • A way to ‘roll-up’ data based on one or more columns, this will give the appearance of rows having children rows even though the data will be flat

Started working on the first bullet with a tree / datagrid hybrid:

  • Have a tree / datagrid list with existing columns in it and editable headerText fields
  • Had a list of available columns and was planning on dragging / dropping from it but after lots of messing around it is apparently not easy to drag and drop from a list of flat data to a list of hierachical data
  • decided to simply go with DropDownList and add/remove buttons

Did a quick example of Java to Java AMF as well as did some reading on Deep Linking in flex.

Phil 1.4.2011

7:30 – 4:00 VISIBILITY

  • Deployed the new PPM to rave reviews! Well, not really. But no one complained either 🙂
  • Lots of activity on VISIBILITY logs today
  • Had to bounce the fgmdev tomcat server. There was a service available problem.
  • Working on Data xfer
    • Binary data wasn’t getting to the servlet as a parameter. Testing Ascii data using POST. Yep, that works.
    • Found a better example for binary communication: http://www.j-nine.com/pubs/applet2servlet/Applet2Servlet.html
    • Binary is now working. Need to expand it out to a workable library.
    • Added logging to the doGet() method, so you can go to the servlet html and see what it’s doing

Dong Shin 01.04.2010

  • PPM Changes
    • fixed Save Confirmation – set flag to false before Query execution so that it forces state to saved
    • unable to duplicate Project Names disappearing from Create Project Panel….
    • dump current database schema and data to ProjPortfolioMgr server – webapp/scripts/project_portfolio_01042011.sql
    • copied project_portfolio database to project_portfolio_01042011
    • working on DBMgmtUtils….
  • forcing foreign key updates
    • ALTER TABLE table1 ADD
      CONSTRAINT fk_keyfield
      FOREIGN KEY(keyfield)
      REFERENCES table2(keyfield)
      ON DELETE REJECT
      ON UPDATE CASCADE

Christine 01.03.2011

  • Continued reading up on Eclipse plugins; went through exercises in the book and a few online (for later editions of Eclipse) to familiarize myself with plugins
  • Began working on Maven/Flex issue on Windows side

Mike 1.3.2011

  • Working on run-time reconfiguring on widgets starting with the RichTextWidget
  • If a user has edit rights, they can mouse over a widget and click on the edit button, it looks very similar to editing a wiki article except the buttons show/hide dynamically
  • The configuration page for that widget is brought up (with a nice animation) and the user can make changes then hit finish
  • The new configuration is loaded by the widget
  • I’ve had to put in a few hacks since I don’t have a data model yet, especially in how I had widget data providers around
  • Looking around at cool flex stuff and found this debug util which you build in to your application : http://lab.kapit.fr/display/kapinspect/Kap+Inspect

Dong Shin 01.03.2011

  • PPM Changes
    • fixed a bug not updating Summary Data for Year 2, 3, so on when editing Financial Data
    • added formatter for invoice amounts
      • InvoiceSelectWindow
      • InvoiceFormWindow
    • allow negative values for invoice amounts
      • red for negative amounts
    • bigger comments area for invoices
    • added comments indicator – number of comments and last updated (tooltip)

Phil 1.3.2011

7:30 – 4:00 VISIBILITY

Christine 12.30.2010

  • Met with Phil to see if building AirFileImageApp with Maven works on Windows. It doesn’t (will Windows and Mac every play nice). Will work further on task to get it working on Windows
  • Phil talked about IDE project and different pieces that will be needed to complete. Will work on Maven parser once other task is complete
  • Phil also showed me how the other projects work so I can get a better understanding of what currently exists, what’s in the works, etc.
  • Was given Eclipse Plug-ins book so I can read up on and get more familiar with how Eclipse plug-ins work

Phil 12.30.2010

7:30 – 4:00 VISIBILITY

  • Imported Anne’s spreadsheet. One column had paragraph-length descriptions, which wouldn’t fit in the DB. Not sure if this needs to be fixed or not…
  • Working with Christie to see if her mavanized air app will compile and run on my machine. Close – It compiles but the air app does not install properly. Also an issue with getting the assets directory and its contents into the project
  • Got my sandbox applet up and running. Much easier when you know what you’re doing. Next step is to upload and download binary data.

Mike 12.29.2010

Made a few architecture and functionality choices for the SWFManager:

  • Desktops: A Desktop is exactly as it sounds.  It contains everything one would normally associate with the desktop: a set of applications in windows, a taskbar of some type and anything else added later at this level.  An instance of SWFManager can have multiple Desktops but only one visible at a time and, for now, applications can not be shared between desktops though it would not be impossible to implement.  Communication between desktops will be possible.  In fact, some events may be fired that can span desktops while others are limited to only live within a single desktop.
  • Apps: An app is very similar to most applications on a windows machine.  They contain everything needed to run independently but, in this case, will be able to communicate between each other.  Every App is placed on a Desktop within an AppTitleWindow which is an extension of DynamicPanel.  An AppTitleWindow has buttons for minimize, maximize, and close and can be moved and resized around the desktop.  The interface for IApp as it stands now:
    • Get and Set configuration, this is a DataObject that contains all the information the application needs to restore its state
    • Get Icon, this returns an icon that will be used in the task bar and possible in menus elsewhere
    • Validate configuration, this returns a boolean indicating whether or not the provided configuration object is valid
    • Default configuration, takes a config object and defaults all its properties
  • Widgets: A Widget is a basic user interface component such as a Chart, Datagrid, RichTextArea, or map with navigation controls.  Widgets live within SOME Apps.  A developer may make a very elaborate App with charts, datagrids, text, maps, and all sorts of things without needing to worry about defining them as Widgets or using our IWidget interface.  However, for some of our internal Apps, it makes sense to make reusable Widgets with certain capabilites.  All Widgets will be added to an App inside of an EditableWidgetContainer which contains controls for accessing Widget options.  The current inteface:
    • Get and Set configuration, this is a DataObject that contains all the information the widget needs to restore its state
    • Validate configuration, this returns a boolean indicating whether or not the provided configuration object is valid
    • Default configuration, takes a config object and defaults all its properties
    • Get Configuration Menu, returns a UIComponent containing whatever inputs are necessary to configure the widget, this is how users will configure their widgets at run-time
  • A few notes on Apps and Widgets:
    • Their interfaces are very similar and it would be possible for a component to implement BOTH IApp and IWidget so an App can be contained within an App.  The interfaces are purposely being kept separate so the developer can make that choice.  For example, it makes sense that an RSSReader may exists as both a Widget within a report or as a standalone App.  However, it wouldn’t make sense for Visiblity to be contained within another App.
    • Their positioning and sizing information will not be held within their own configurations.  It will instead be held either in the parent container’s config or the parent container’s layout config.
  • IApp, AppTitleWindow, and several applications are already written at this point so I’m now working on EditableWidgetContainer and a few sample widgets: AdvancedDataGrid, RichTextArea, and maybe a chart or 2

Phil 12.29.2010

7:30 – 4:30 VISIBILITY

  • Meeting with Anne this morning. We were able to pull data (via excel) from the main database into visibility. Not too many steps either. She’s going to work on putting together a good example table or tables that will let us make a particularly nice set of visualizations
  • Dong and I have a meeting with Adam and Christie at 11:00 – 1:00
    • Summary section year one is summing properly but subsequent years are not.
    • Budgets can be for only one year
    • Explicit save for financial data entry. There may need to be some rolling backup (saving to the client?) that the user may restore from if there is a problem.
    • Show the date of the last comment in the add/view comments area
    • Add commas to the invoice number entry fields
    • make login test not case sensitive
    • need to be able to enter negative amounts for the invoices
    • project name disappears from modify project screen occasionally when returning from some other task
    • Bigger invoice list view to include comments
    • Automatically add a comment if a past value has been changed. Something to the effect 12.28.2020 – Phil Feldman changed November 2010 program actuals for line item xyz from $123 to $345
    • Admin capability to add/modify/delete/merge tables produced using “add new”. Default behavior could be to present a list of projects that use the tag, and have the admin fix each manually. There could also be a global replace button.
    • Add a Financial Status page that only lets HQ see and change project info. This panel mostly shows data from the Funding Requests, but also allows the user to change the funding request by editing fields in the table. To do this several fields need to be added to the Funding Request widget:
      • Reference number in FACTS in reimbursable section (possible uniqueness test?)
      • if certified date != null, put funding amount in initiate/comment
      • Add outlay entry to reimbursable and Direct Cite
      • Add contractor name and location to Direct Cite table
      • Column that subtracts outlays from obligations
      • Roles will need year ranges
      • Program Elements and FACTS PE add to budget line item
      • Remaining to distribute – Total budget minus distributions
      • A scan of Trish’s spreadsheet is here

foo

Dong Shin 12.29.10

  • PPM
    • copied PPM stuff for deployment at /exchange/PPM_122910
  • MavenAssist
    • modified CreateProject and UserSettings to use archetypeRepository
    • -DarchetypeRepository=http://repository.sonatype.org/content/groups/public
    • current version is 1.9.2.8
  • meeting with Trish and folks
    • lots of notes to come….
  • PPM Bugs
    • Summary not updating for year 2, 3, so on in Financial Data
    • Ability to create project with 1 year span
    • Save Confirmation pops up on Financial Data – not working properly
    • Add comments status indicator, possibly number of comments and/or last updated date
    • Add commas to invoice dollar amont
    • Update login not possible because it’s used as database key. Let users change it and use no case-sensitive joins for existing data?
    • Allow negative values for invoice amounts
    • Project Name in Create Project disappearing?
    • larger View Invoices Panel in Financial Data so that comments are visible
    • logs/alerts for changing previous months data
      • from <> to <> by user id?
    • add delete/modify capabilities to all tables that use single drop down list to add a string to projects, funding requests, etc.
  • PPM Enhancements to support Financial Statu Sheet
    • one to one relationship with project
    • most of the data comes from Project and Funding Requests
    • if Certified Data != null, Initiate/Commit needs to be filled
    • new fields in Project – added to the Budget Datagrid
      • Program Element
      • FACTS BE
    • new fields in Funding Request
      • Reference Number in Reimbursable Amount – uniqueness test/
      • Contractor Name and Location in Reimbursable Amount/Direct Cites
      • Outlay in Reimbursable and Direct Cites
    • PM Actual Outlay = obligation – outlay
    • Roles to support users to fall into FYs and Projects
    • Remaining to Distribute = total budget – distributions