package uk.co.mmscomputing.device.phone; import java.io.*; import java.util.*; import javax.swing.*; import uk.co.mmscomputing.device.capi.*; abstract public class PhoneCaller implements PhoneConstants{ static protected boolean installed=false; public abstract boolean isAPIInstalled(); protected Vector listeners=new Vector(); // list of fax sender event listeners protected PhoneCallerMetadata md=new PhoneCallerMetadata(); // information structure public abstract void call()throws IOException; public void setMetadata(Properties properties){ new PhoneCallerPanel(this,md,properties).display(); } public void addListener(PhoneCallerListener listener){ listeners.add(listener); } public void fireListenerUpdate(PhoneCallerMetadata.Type type){ for(Enumeration e = listeners.elements(); e.hasMoreElements() ;){ PhoneCallerListener listener=(PhoneCallerListener)e.nextElement(); listener.update(type,md); } } public JComponent getGUI(Properties properties){ return new PhoneCallerGUI(properties,this); } static public PhoneCaller getDevice(){ String osname=System.getProperty("os.name"); if(osname.startsWith("Linux")){ PhoneCaller phoneCaller=CapiPhoneCaller.getDevice(); if(phoneCaller.isAPIInstalled()){ return phoneCaller; } }else if(osname.startsWith("Windows")){ PhoneCaller phoneCaller=CapiPhoneCaller.getDevice(); if(phoneCaller.isAPIInstalled()){ return phoneCaller; } }else if(osname.startsWith("Mac")){ } return null; } }