// Path: src/java/de/softwareforge/pgpsigner/jline/PartyKeyCompletor.java
// public class PartyKeyCompletor extends AbstractKeyCompletor implements Completor
// {
// 
//     private final AppContext context;
// 
//     public PartyKeyCompletor(final AppContext context)
//     {
//         this.context = context;
//     }
// 
//     public int complete(final String buffer, final int cursor, final List candidates)
//     {
//         return super.complete(context.getPartyRing().getVisibleKeys().getIds(), buffer, cursor, candidates);
//     }
// }
// 
// Path: src/java/de/softwareforge/pgpsigner/key/KeyId.java
// public class KeyId implements Comparable<KeyId>
// {
// 
//     private final Long id;
// 
//     private final String keyId;
// 
//     public KeyId(final Long id)
//     {
//         this.id = id;
//         this.keyId = "0x" + StringUtils.right(Long.toHexString(id), 8);
//     }
// 
//     public KeyId(final String keyId)
//     {
//         this.id = null;
//         this.keyId = keyId;
//     }
// 
//     public Long getId()
//     {
//         return id;
//     }
// 
//     public String toString()
//     {
//         return keyId;
//     }
// 
//     public int compareTo(KeyId o)
//     {
//         return new CompareToBuilder().append(this.id, o.id).toComparison();
//     }
// 
//     public int hashCode()
//     {
//         return keyId.hashCode();
//     }
// 
//     public boolean equals(final Object obj)
//     {
//         if (!(obj instanceof KeyId))
//         {
//             return false;
//         }
//         if (this == obj)
//         {
//             return true;
//         }
//         KeyId rhs = (KeyId) obj;
//         return new EqualsBuilder().append(keyId, rhs.keyId).isEquals();
//     }
// 
// }


import jline.ArgumentCompletor;
import jline.Completor;
import jline.NullCompletor;
import jline.SimpleCompletor;
import org.apache.commons.cli.Option;
import de.softwareforge.pgpsigner.jline.PartyKeyCompletor;
import de.softwareforge.pgpsigner.key.KeyId;
    }

    @Override
    public Completor getCompletor()
    {
        return new ArgumentCompletor(new Completor[] { new SimpleCompletor(getName()), new PartyKeyCompletor(getContext()),
                new NullCompletor() });
    }

    @Override
    public boolean prerequisiteInteractiveCommand(final String[] args)
    {
        if (args.length < 2)
        {
            System.out.println("Missing argument for " + args[0]);
            return false;
        }

        if (!getContext().getPartyRing().getVisibleKeys().containsId(new KeyId(args[1])))
        {
            System.out.println("Key " + args[1] + " is not on the party key ring!");
            return false;
        }

        return true;
    }

    @Override
    public void executeInteractiveCommand(final String[] args)
    {
// Path: src/java/de/softwareforge/pgpsigner/jline/PartyKeyCompletor.java
// public class PartyKeyCompletor extends AbstractKeyCompletor implements Completor
// {
// 
//     private final AppContext context;
// 
//     public PartyKeyCompletor(final AppContext context)
//     {
//         this.context = context;
//     }
// 
//     public int complete(final String buffer, final int cursor, final List candidates)
//     {
//         return super.complete(context.getPartyRing().getVisibleKeys().getIds(), buffer, cursor, candidates);
//     }
// }
// 
// Path: src/java/de/softwareforge/pgpsigner/key/KeyId.java
// public class KeyId implements Comparable<KeyId>
// {
// 
//     private final Long id;
// 
//     private final String keyId;
// 
//     public KeyId(final Long id)
//     {
//         this.id = id;
//         this.keyId = "0x" + StringUtils.right(Long.toHexString(id), 8);
//     }
// 
//     public KeyId(final String keyId)
//     {
//         this.id = null;
//         this.keyId = keyId;
//     }
// 
//     public Long getId()
//     {
//         return id;
//     }
// 
//     public String toString()
//     {
//         return keyId;
//     }
// 
//     public int compareTo(KeyId o)
//     {
//         return new CompareToBuilder().append(this.id, o.id).toComparison();
//     }
// 
//     public int hashCode()
//     {
//         return keyId.hashCode();
//     }
// 
//     public boolean equals(final Object obj)
//     {
//         if (!(obj instanceof KeyId))
//         {
//             return false;
//         }
//         if (this == obj)
//         {
//             return true;
//         }
//         KeyId rhs = (KeyId) obj;
//         return new EqualsBuilder().append(keyId, rhs.keyId).isEquals();
//     }
// 
// }


// Path: src/java/de/softwareforge/pgpsigner/commands/RemoveCommand.java
import jline.ArgumentCompletor;
import jline.Completor;
import jline.NullCompletor;
import jline.SimpleCompletor;
import org.apache.commons.cli.Option;
import de.softwareforge.pgpsigner.jline.PartyKeyCompletor;
import de.softwareforge.pgpsigner.key.KeyId;

    }

    @Override
    public Completor getCompletor()
    {
        return new ArgumentCompletor(new Completor[] { new SimpleCompletor(getName()), new PartyKeyCompletor(getContext()),
                new NullCompletor() });
    }

    @Override
    public boolean prerequisiteInteractiveCommand(final String[] args)
    {
        if (args.length < 2)
        {
            System.out.println("Missing argument for " + args[0]);
            return false;
        }

        if (!getContext().getPartyRing().getVisibleKeys().containsId(new KeyId(args[1])))
        {
            System.out.println("Key " + args[1] + " is not on the party key ring!");
            return false;
        }

        return true;
    }

    @Override
    public void executeInteractiveCommand(final String[] args)
    {
        getContext().getPartyRing().setVisible(new KeyId(args[1]), false);