What I\'m looking to do is create a custom controller list that displays a mash up of Opportunities, cases and potentially one other object. I started using the class from
// First, prototype wrapper list above main class constructor
public List theCaseOppWrapper {get; set;}
// Define wrapper inner-class
public class CaseOppWrapper
{
// The case object being wrapped
public Case c {get; set;}
// The Opportunity being wrapped
public Opportunity o {get; set;}
// Get Case AND Opportunity objects as parameters in constructor
public CaseOppWrapper(Case theCase, Opportunity theOpportunity)
{
this.c = theCase;
this.o = theOpportunity;
}
// Command handler - the fun part!
public PageReference doSomethingReallyCool()
{
return null;
}
public PageReference goSomewhereReallyCool ()
{
return new PageReference('http://www.youtube.com/watch?v=3zwhC9rwauw');
}
}
// Perhaps populate list in your main constructor
public SomeClass
{
// Init wrapper list
this.theCaseOppWrapper = new List();
// Let's say, for example, that you have an Opportunity__c reference field on your Case object.
// In this case, you would first create a helper Opportunity map, like this:
Map oppMap = new Map();
for(Opportunity o : opportunities)
{
oppMap.put(o.Id, o);
}
// Now looping through cases you can create your blended wrapper.
// Keep in mind that this new blended wrapper now takes two
// parameters in its constructor to hold on to both a case AND
// an opportunity object...
List cases = [SELECT Id, Subject, …, …, … FROM Case LIMIT 1000];
for(Case c : cases)
{
this.theCaseOppWrapper.add(new CaseOppWrapper(c, oppMap.get(c.Opportunity__c)));
}
}
Now in Visualforce...